11
votes

Devrait être appliqué glenable (GL_Texture_2D) par unité de texture

in OpenGL j'ai toujours compris que glenable (gl_texture_1d) , glenable (gl_texture_2d) glenable (gl_texture_3d) (et correspondant gldisable ) est un paramètre par paramètre par texture.

Récemment, j'ai essayé de confirmer cela mais j'ai trouvé une documentation claire confirmant de la manière de cette question.

mettre simplement et en code, devrais-je faire ce xxx

ou ce xxx

J'espérais trouver une certaine clarté.


0 commentaires

3 Réponses :


8
votes

C'est par unité de texture.

de la spécification GL1.5, 3.8.15:

Chaque unité de texture est activée et liée Pour texturer des objets indépendamment de les autres unités de texture


0 commentaires

8
votes

C'est en effet par unité de texture. La documentation la plus récente que j'ai trouvée mentionnée explicitement était la spécification GL Open GL (mise à jour de 2006) ici

à la section 3.8.16: Application de texture

Il est probablement mentionné quelque part dans les nouvelles spécifications, mais ils étaient lourds réorganisés. Vous pouvez consulter toutes les spécifications de la version Open GL sur le site Web OpenGL ORG (je voulais poster un lien mais je ne peux pas sembler poster plus d'un).


2 commentaires

Eh bien, en fait, cela ne sera pas dans les dernières révisions de base car une fonction fixe a été obsolète puis supprimée et l'activation contrôle l'état de fonction fixe. Il n'a aucun effet sur les shaders.


@BAHBAR: voulez-vous dire que les Shaders GLSL avec leurs annotations peuvent contrôler l'état des unités de texture et des échantillonneurs et donc il n'y a pas besoin d'une glenable explicite (GL_Texture2D) par exemple?



1
votes

Si vous utilisez GLSL Shaders dans OpenGL, l'appel glenable (GL_Texture) n'a pas d'influence.

En outre, si vous souhaitez passer au profil de base OpenGL 3.x, gardez à l'esprit que glenable (GL_Texture) est obsolète.


1 commentaires

Glenable (GL_Texture_2D) a toujours un effet dans mon code, malgré un seul code de shader. Il semble que cela appelle à GLBindTexture Changer le comportement ... Ce serait un profil de noyau OpenGL 3.2.