2012-09-06 17 views
22

Quando si campiona una trama 2D in GLSL (a uniform sampler2D), viene utilizzata la funzione texture e la dimensione viene dedotta dal campionatore (2D in questo caso). Questo è il modo moderno di campionare una trama nel GLSL dall'1,30 (GLSL Reference Pages). Tuttavia, è anche possibile utilizzare la funzione texture2D.trama vs texture2D in GLSL

La funzione texture2D è obsoleta e, in tal caso, supporterà che la funzione texture2D sia rimossa (o sia stata rimossa) in alcune versioni di GLSL?

risposta

28

Sì, texture2D() è deprecato da (almeno) OpenGL 3.3; vedere pagina 99 dello 3.30 GLSL specification. Continuerà a essere supportato nei profili di compatibilità OpenGL per evitare di rompere il codice esistente, ma il suo utilizzo nel nuovo codice è fortemente sconsigliato.

EDIT: I dettagli sono leggermente diversi per OpenGL ES, ma il risultato finale è lo stesso: texture2D() è stato deprecato e sostituito da texture() in OpenGL ES 3.0; vedere la sezione 8.8 di 3.0 GLSL ES specification.

+3

Non è stato menzionato OpenGL ES nella domanda originale, quindi ho pensato che stavamo parlando di vaniglia GL. Se la risposta è diversa per GL ES, vale certamente la pena menzionarla; Aggiornerò la mia risposta (a meno che qualcun altro voglia intervenire). – postgoodism

+8

@Jessy Considerando che la domanda non ha menzionato alcun ES (che non ha nemmeno la deprecazione, per non parlare di GLSL 1.30 o la funzione 'texture' come ** menzionata esplicitamente nella domanda **), il tuo commento non lo fa Ha davvero senso. Il fatto (o è comunque quello?) Che la maggior parte delle persone usa OpenGL ES non rende magicamente questa risposta perfettamente corretta senza senso. Perché ti aspetti una risposta fuori tema (per qualsiasi motivo) non improvvisamente rende una risposta in argomento off-topic. –

+0

Quindi la risposta a questo uso 'texture()' se su OpenGL e 'texture2D()' se su OpenGL ES? Avrei preferito che ci fosse una funzione. – Zebrafish