2012-09-06 3 views
22

При выборке 2D-текстуры в GLSL (a uniform sampler2D) используется функция texture и измерение выводится из сэмплера (в данном случае 2D). Это современный способ отбора текстуры в GLSL с 1.30 (GLSL Reference Pages). Однако вы также можете использовать функцию texture2D.Текстура против текстуры2D в GLSL

Является ли функция texture2D устаревшей, и если да, будет ли поддерживаться функция texture2D, которая будет удалена (или была удалена) в некоторой версии GLSL?

ответ

28

Да, текстура2D() устарела как минимум (по крайней мере) OpenGL 3.3; см. стр. 99 of 3.30 GLSL specification. Он будет по-прежнему поддерживаться в профилях совместимости OpenGL, чтобы не нарушать существующий код, но его использование в новом коде сильно не рекомендуется.

EDIT: детали для OpenGL ES немного отличаются друг от друга, но конечный результат тот же: texture2D() был устарел и заменен текстурой() в OpenGL ES 3.0; см. раздел 8.8 раздела 3.0 GLSL ES specification.

+3

В исходном вопросе не было упоминания о OpenGL ES, поэтому я предположил, что мы говорили о ванильном GL. Если для GL ES ответ отличается, это, безусловно, стоит упомянуть; Я обновлю свой ответ (если кто-то еще не хочет перезвонить). – postgoodism

+8

@Jessy Учитывая, что в вопросе не упоминалось никаких ES (у которого даже нет устаревания, не говоря уже о GLSL 1.30 или о функции «текстуры» как **, упомянутой явно в вопросе **), ваш комментарий doesn ' t действительно имеет смысл. Факт (или это все равно?), Что большинство людей использует OpenGL ES, не волшебным образом делает этот совершенно правильный ответ бессмысленным. Потому что вы ожидаете, что ответ вне темы (по каким-либо причинам) не сделает ответ на тему не по теме. –

+0

Итак, ответ на это использует «texture()», если на OpenGL и «texture2D()», если на OpenGL ES? Я бы предпочел, чтобы была одна функция. – Zebrafish

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