Russian Qt Forum
Сентябрь 30, 2024, 16:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: OpenGL POT (без "с") [решено]  (Прочитано 3117 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Декабрь 19, 2010, 14:57 »

Добрый день

Прошу прощения за тупой вопрос (чисто на конкретные знания): как определить карта поддерживает произвольный размер текстуры или только POT - "Power of Two" (32, 64. 256 и.т.п)  ? Конечно гуглю но пока без успеха

Спасибо
« Последнее редактирование: Декабрь 22, 2010, 12:13 от Igors » Записан
xop
Гость
« Ответ #1 : Декабрь 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 Улыбающийся
Записан
xop
Гость
« Ответ #2 : Декабрь 21, 2010, 22:27 »

Апдейт Улыбающийся Специально посмотрел в спецификации - ARB_texture_non_power_of_two перешла в ядро начиная с версии 2.0. Так что их должны держать практически все карточки начиная где-то с 2003-2004 года выпуска. Хотя активно пользоваться ими не рекомендуют, разве что для рендер таргетов.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Декабрь 22, 2010, 12:13 »

Понял, спасибо xop
Решается через

const GLubyte * ext = glGetString(GL_EXTENSIONS);

Затем в возвращенной строке ищем GL_ARB_texture_non_power_of_two. Если есть - поддерживается
« Последнее редактирование: Декабрь 22, 2010, 12:16 от Igors » Записан
xop
Гость
« Ответ #4 : Декабрь 22, 2010, 13:44 »

Ну вообще-то если glGetIntegerv( GL_MAJOR_VERSION, &majorVersion ) записала в majorVersion 2 или выше, то автоматом можно считать, что поддерживаются. Более того, писатели драйверов вполне имеют право в этом случае не экспортировать в явном виде расширение texture_non_power_of_two. Так что имхо лучше сначала проверить версию, и если она ниже 2, то уже проверять наличие расширения.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 22.