2009-07-13 2 views
1

Я создаю средство просмотра изображений с помощью openGL, и я столкнулся с ситуацией, когда мне нужно загрузить очень большие (> 50 МБ) изображения для просмотра. Я загружаю изображения в виде текстур и отображаю их в GL_QUAD, который отлично работает для меньших изображений, но на больших изображениях загрузка не получается, и я получаю пустой прямоугольник. До сих пор я реализовал очень уродливый взлом, который использует другую программу для преобразования изображений в меньшие версии с более низким разрешением, которые можно загрузить, но я ищу более элегантное решение. Я обнаружил, что у openGL есть texture compression feature, но я не могу заставить его работать. Когда я называюКак использовать сжатие текстуры в openGL?

glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_ARB, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits()); 

Я получаю ошибку компилятора "GL_COMPRESSED_RGBA_ARB необъявленных". Что я делаю не так? Есть ли библиотека, которую я пропускаю? И в целом, это жизнеспособное решение моей проблемы?

Я использую Qt Creator на компьютере с Windows Vista с графической картой NVIDIA Quadro FX 1700.

ответ

2

На моей GFX карты максимальное разрешение для OPENGL текстуры 8192x8192, если ваше изображение больше, то 50Мб, это Propably очень очень высокое разрешение ... Проверить http://www.opengl.org/resources/faq/technical/texture.htm, он описывает, как вы можете найти максимум размер текстуры.

1

Во-первых, я должен был спросить, какое разрешение эти большие изображения? Во-вторых, для использования такого определения, как GL_COMPRESSED_RGBA_ARB, вам нужно будет загрузить и использовать что-то вроде GLEW, которое более модернизировано в GL api, чем стандартная установка MS-Dev.

+0

Изображения от 10 000 до 30 000 пикселей на каждую сторону. –

+0

Да, драйверы вашей карты, скорее всего, не смогут справиться с этим разрешением, поэтому лучше всего разбить их на более мелкие изображения. –

Смежные вопросы