Статус текстур NPOT в OpenGL сегодня - PullRequest
5 голосов
/ 15 июня 2011

В настоящее время я пишу игру, в которой используется вывод 2D OpenGL под sdl, и пытаюсь загрузить текст с использованием SDL_ttf.Однако я должен дополнить текст пустыми пикселями, так как кажется, что обычный OpenGL не поддерживает не-мощь двух текстур.Я слышал, что есть расширение OpenGL под названием GL_ARB_texture_non_power_of_two, которое позволяет не использовать две текстуры.Сколько карт на сегодняшний день несовместимо с этим расширением и как его загрузить?

Ответы [ 2 ]

10 голосов
/ 15 июня 2011

Любой OpenGL версии 2.0 или выше поддерживает текстуры не-степени двух.Это означает практически любую карту, выпущенную примерно после 2005 года. Это включает в себя GeForce FX и 6xxx и выше.Он также включает Radeon 9500 и выше (хотя до серии Radeon HD Radeon не разрешают NPOT иметь мипмапы).

Кстати, я надеюсь, что вы не пытаетесь поместить каждого персонажа в отдельную текстуру.Потому что это было бы ужасно с точки зрения производительности.Поместите все символы, которые вы хотите использовать в одну текстуру и выберите те, которые вам нужны.Вам даже не нужен NPOT для этого.

Что касается комментария mrazza по поводу использования только POT, то нечего бояться текстур NPOT (если ваше оборудование может их поддерживать).Это не должно быть то, к чему вы обращаетесь в качестве первого средства, потому что с ними может быть незначительное снижение производительности, но для очевидных случаев, когда заполнение или изменение масштаба было бы неуместным (цели рендеринга и т. Д.), Естьнечего бояться их использования.

2 голосов
/ 15 июня 2011

В общем, на эти вопросы даются ответы в спецификации opengl .

Однако текстуры NPOT были интегрированы в OpenGL достаточно давно, поэтому вам нужно взглянуть на старую версию, чтобы даженайти ссылку на это.В спецификации 3.0 , например, в приложении L.3 вы увидите, что расширение NPOT было интегрировано в ядро ​​GL, начиная с GL 2.0.Поэтому любая реализация, поддерживающая GL 2.0 (это практически все графические процессоры для ПК с конца 2004 года), поддерживает эту функцию.

Что касается того, как ее «загрузить»: ничего не поделаешь.Просто передайте размеры не степени двух в glTexImage.

...