OpenGL vers> = 2.0 требует, чтобы размеры текстуры были кратны 4 пикселям? - PullRequest
3 голосов
/ 27 января 2011

Я работаю над приложением Mac, использующим текстуры OpenGL, которые загружаю из файлов изображений на диске с помощью glTexImage2D.

Согласно документации, для версий OpenGL> = 2.0, текстуры могут быть любого произвольного размера. (для версий <2.0 размеры x и y должны быть равны 2). </p>

Однако я получаю плохие текстуры, если размеры моего изображения не кратны 4. Я искал и искал, но не могу найти документацию по этому требованию. Фактически, «красная книга» прямо заявляет, что размеры текстуры могут быть любым значением для версии> = 2.0.

Чего мне не хватает?

И есть ли выигрыш в производительности при преобразовании текстуры в следующее по величине измерение степени двойки? Моему приложению потребуется Mac OS 10.6.6 или более поздней версии, которая должна работать на любом Intel Mac. Некоторые из ранних моделей Intel имели очень «скромное» графическое оборудование.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

4 голосов
/ 27 января 2011

Ограничение на обычные текстуры с размерами, равными степеням 2, сохраняется в версиях OpenGL> = 2. Однако существует поддерживаемая целевая текстура new , GL_TEXTURE_RECTANGLE, которая поддерживает произвольные измерения, но не буду заниматься мипмапингом.

Нет ограничений на размерность, кратную 4, однако я подозреваю, что у вас могут быть установлены параметры glPixelStore (GL_UNPACK ...), возможно, установленные другими частями программы, которые вызывают это поведение.

0 голосов
/ 27 января 2011

В каком формате ваши текстуры? Сжатые форматы текстур S3TC работают с плитками 4x4, поэтому могут не работать или иметь визуальные артефакты, если размеры не кратны 4.

...