Как использовать сжатие текстур в openGL? - PullRequest
1 голос
/ 14 июля 2009

Я создаю просмотрщик изображений, используя openGL, и столкнулся с ситуацией, когда мне нужно загрузить очень большие (> 50 МБ) изображения для просмотра. Я загружаю изображения в виде текстур и отображаю их в GL_QUAD, который отлично работал для небольших изображений, но на больших изображениях загрузка не удалась, и я получил пустой прямоугольник. До сих пор я реализовал очень уродливый хакер, который использует другую программу для преобразования изображений в меньшие версии с более низким разрешением, которые можно загрузить, но я ищу более элегантное решение. Я обнаружил, что 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 undeclared". Что я делаю неправильно? Есть ли библиотека, по которой я скучаю? И вообще, это жизнеспособное решение моей проблемы?

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

Ответы [ 2 ]

2 голосов
/ 14 июля 2009

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

1 голос
/ 14 июля 2009

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

...