Lo stato GL per gli attacchi è un nome di trama per target (ovvero 1D/2D/3D/cubo). Quindi, quando si chiama
glBindTexture(GL_TEXTURE_2D, my2dTex)
glBindTexture(GL_TEXTURE_1D, my1dTex)
il GL ricorderà entrambe le impostazioni.
Ora, la risposta di quale GL utilizza dipende dall'avere uno shader attivo.
Se uno shader è attivo, il GL utilizzerà qualsiasi cosa lo shader dice di usare. (basato su sampler1d/sampler2d ...).
Se lo shader non è attivo, dipende innanzitutto da quale chiamata glEnable è stata effettuata.
glEnable(GL_TEXTURE_2D)
glEnable(GL_TEXTURE_1D)
Se sia sono abilitati, v'è una regola priorità statica nella specifica (3.8.15 Texture applicazione nelle specifiche GL 1.5).
Cube > 3D > 2D > 1D
Quindi nel tuo caso, se entrambi i target di trama sono abilitati, verrà utilizzato quello 2D.
Come nota a margine, notare come uno shader non si preoccupa se il bersaglio texture è abilitato ...
Modifica per aggiungere:
E per le persone che vogliono davvero ottenere per i dettagli grintosi, è sempre avere una trama vincolata per ciascun target * ogni unità. Il nome 0 (l'impostazione predefinita per lo stato di associazione) corrisponde a una serie di oggetti trama, uno per obiettivo. glBindTexture(GL_TEXTURE_2D, 0)
e glBindTexture(GL_TEXTURE_1D, 0)
entrambi legano una trama, ma non la stessa ...
Questo è storico, specificato per corrispondere al comportamento di GL 1.0, in cui gli oggetti texture non esistevano ancora. Non sono sicuro di cosa abbia fatto la deprecazione in GL3.0 con questo.
Scusa, pensi male. Bahbar fornisce la risposta corretta. – Thomas
Bene, ho imparato qualcosa di nuovo oggi. Questo mi insegnerà a rispondere quando non ho a portata di mano il mio libro OpenGL! –