Название: OpenGL POT (без "с") [решено] Отправлено: Igors от Декабрь 19, 2010, 14:57 Добрый день
Прошу прощения за тупой вопрос (чисто на конкретные знания): как определить карта поддерживает произвольный размер текстуры или только POT - "Power of Two" (32, 64. 256 и.т.п) ? Конечно гуглю но пока без успеха Спасибо Название: Re: OpenGL POT (без "с") Отправлено: xop от Декабрь 20, 2010, 15:09 Ну, если OpenGL 3.0 и выше драйвером держится - то можно автоматически. Может и ниже можно, точно версию не помню, можно посмотреть на сайте opengl.org. Еще можно ориентироваться на расширения:
1) если есть NV/ARB_texture_rectangle, значит можно создавать специальные текстуры GL_TEXTURE_RECT. Они двумерные, не NPOT, не могут иметь мипмапов. 2) если есть ARB_texture_non_power_of_two, значит обычные текстуры GL_TEXTURE_2D могут иметь npot размер Ну и чтобы не насиловать гугль - рекомендую ходить вот по этому адресу: http://www.opengl.org/registry/ Там есть спецификации OpenGL и всех официально зарегистрированных расширений с момента появления этого самого OpenGL :) Название: Re: OpenGL POT (без "с") Отправлено: xop от Декабрь 21, 2010, 22:27 Апдейт :) Специально посмотрел в спецификации - ARB_texture_non_power_of_two перешла в ядро начиная с версии 2.0. Так что их должны держать практически все карточки начиная где-то с 2003-2004 года выпуска. Хотя активно пользоваться ими не рекомендуют, разве что для рендер таргетов.
Название: Re: OpenGL POT (без "с") [решено] Отправлено: Igors от Декабрь 22, 2010, 12:13 Понял, спасибо xop
Решается через const GLubyte * ext = glGetString(GL_EXTENSIONS); Затем в возвращенной строке ищем GL_ARB_texture_non_power_of_two. Если есть - поддерживается Название: Re: OpenGL POT (без "с") [решено] Отправлено: xop от Декабрь 22, 2010, 13:44 Ну вообще-то если glGetIntegerv( GL_MAJOR_VERSION, &majorVersion ) записала в majorVersion 2 или выше, то автоматом можно считать, что поддерживаются. Более того, писатели драйверов вполне имеют право в этом случае не экспортировать в явном виде расширение texture_non_power_of_two. Так что имхо лучше сначала проверить версию, и если она ниже 2, то уже проверять наличие расширения.
|