2012-09-06 24 views
22

Al muestrear una textura 2D en GLSL (a uniform sampler2D), se usa la función texture y la dimensión se deduce de la muestra (2D en este caso). Esta es la forma moderna de muestrear una textura en el GLSL desde 1.30 (GLSL Reference Pages). Sin embargo, también puede usar la función texture2D.texture vs texture2D en GLSL

¿Está obsoleta la función texture2D y, si es así, se eliminará (o se habrá eliminado) la compatibilidad con la función texture2D en alguna versión de GLSL?

Respuesta

28

Sí, text2D() está en desuso desde (al menos) OpenGL 3.3; ver la página 99 del 3.30 GLSL specification. Seguirá siendo compatible con los perfiles de compatibilidad de OpenGL para evitar romper el código existente, pero se desaconseja su uso en el nuevo código.

EDIT: Los detalles son ligeramente diferentes para OpenGL ES, pero el resultado final es el mismo: texture2D() fue obsoleto y reemplazado por texture() en OpenGL ES 3.0; ver la sección 8.8 del 3.0 GLSL ES specification.

+3

No se mencionó OpenGL ES en la pregunta original, así que supuse que estábamos hablando de vanilla GL. Si la respuesta es diferente para GL ES, ciertamente vale la pena mencionarla; Actualizaré mi respuesta (a menos que alguien más quiera intervenir). – postgoodism

+8

@Jessy Teniendo en cuenta que la pregunta no mencionó ningún ES (que ni siquiera tiene desaprobación, por no hablar de GLSL 1.30 o la función 'texture' como ** mencionada explícitamente en la pregunta **), tu comentario no lo hace Realmente tiene sentido. El hecho (¿o es uno de todos modos?) De que la mayoría de la gente use OpenGL ES no hace mágicamente que esta respuesta perfectamente correcta carezca de sentido. Debido a que espera que una respuesta fuera del tema (por los motivos que sean) no de repente convierte una respuesta en el tema fuera de tema. –

+0

Entonces, ¿la respuesta a este uso es 'texture()' si está en OpenGL y 'texture2D()' si está en OpenGL ES? Hubiera preferido que hubiera una función. – Zebrafish