2015-02-18 2 views
1

Я работаю над мобильным приложением OpenGL для Android, используя OpenGL ES3.x для графики.OpenGL ES 3: glGenerateMipmap геометрические ограничения

Я хотел бы использовать функцию glGenerateMipmap, но я чувствую себя неловко, потому что помню, что, по крайней мере, с предыдущими версиями OpenGL, там, где некоторые геометрические ограничения на размер текстуры (квадратные, n-pot текстуры если я правильно помню).

Ссылка на страницу glGenerateMipmap for OpenGL ES3 больше не сообщает ничего подобного, и беглый тест на нескольких устройствах, похоже, подтверждает информацию.

По-прежнему, учитывая, что недавний OpenGL ES3 (и с учетом качества какой-либо мобильной OpenGL-реализации ...), я чувствовал бы себя более уверенным, если кто-то из первых рук подтвердит, что использование его также в порядке в реальном времени.

вопрос сводится к следующему:

  1. Верно ли, что glGenerateMipmap на OpenGL ES 3 не накладывает ограничений на геометрию текстуры?
  2. И если да, то безопасно ли использовать его на не квадратных, а не n-pot текстурах в дикой природе?

Спасибо!

ответ

1

Эти ограничения на отсутствие мощности двух текстур официально отсутствуют в ES 3.0. Соответствующий язык из спецификации ES 2.0 нигде не встречается в спецификации ES 3.0. В setion Е.1, в котором перечислены новых возможностях ES 3.0 по сравнению с ES 2.0, он также явно упоминает об этом:

бесприводных-из-двух текстур с поддержкой режимом полных оберток и множественное отображение

Так что да, вы можете безопасно использовать glGenerateMipmap() на текстурах NPOT. Существует один тонкое, но важное ограничение:

Если массив level_base не специфическая ред с некалиброванным внутренним форматом от table3.3 или размера внутреннего формата, который является одновременно цветным отображаемым и texture- фи lterable в соответствии с таблицей 3.13, генерируется ошибка INVALID_OPERATION.

Это означает, что, например, glGenerateMipmap() не поддерживается для любых целочисленных форматов (так как они не являются текстурами фильтрованию), а также не для всех форматов с плавающей точкой (так как они не имеют цветовые отображаемые).

Я не думаю, что быть квадратом действительно было ограничением на текстуры в OpenGL. Это определенно не было в ES 2.0, а не в ES 3.0.

+0

Спасибо за очень четкий и очень точный ответ (PS: вчера я был немного неуклюжим, и я, вероятно, сделал «квадратную» вещь ... :)) – Rick77

Смежные вопросы