2012-03-31 2 views
5

Cosa succede se si vincolano (trame diverse) sia a GL_TEXTURE_2D sia a GL_TEXTURE_CUBE_MAP nella stessa unità immagine di trama?OpenGL ES 2.x: Bind entrambi `GL_TEXTURE_2D` e` GL_TEXTURE_CUBE_MAP` nella stessa unità immagine texture?

Ad esempio, supponiamo che leghi una trama al target GL_TEXTURE_2D e una trama alla destinazione GL_TEXTURE_CUBE_MAP della stessa unità texture. Posso quindi avere due variabili uniformi, una a sampler2D e l'altra a samplerCube e impostare entrambe su 0 (per fare riferimento a GL_TEXTURE0)?

Sospetto che la risposta sia "no" (o che il risultato non sia definito) ma non ho trovato nulla nelle specifiche che vietano specificatamente l'uso di più target di texture nella stessa unità dell'immagine di texture.

risposta

7

Non ho trovato nulla che descriva se è possibile associare una trama 2D e una texture mappa cubo nella stessa unità di texture, ma (o quindi) Immagino che questo sia perfettamente possibile. È logico consentirlo, poiché tutte le funzioni di modifica delle texture richiedono comunque di specificare l'obiettivo di trama su cui operare, comunque.

Ma le specifiche OpenGL ES 2 non consente esplicitamente di usare entrambi allo stesso tempo in uno shader, come capitolo 2.10 dice:

Non è consentito di avere variabili di tipo diverso campionatore che puntano allo stesso texture image unit all'interno di un oggetto programma. Questa situazione può essere rilevata solo al successivo comando di rendering emesso, e verrà quindi generato un errore INVALID_OPERATION.

Quindi non è possibile utilizzare sia un sampler2D e samplerCube riferendosi alla stessa unità texture per piegare i limiti di unità texture della implementazione.