J'ai lu un exemple de texture dans OpenGL 2.1
. Le fragment shader ressemble à ceci:
#version 120
uniform sampler2D texture;
varying vec2 texcoord;
void main(void)
{
gl_FragColor = texture2D(texture, texcoord);
}
texcoord
est passé du vertex shader.
Le code de rendu C++ suivant est utilisé:
void render()
{
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture_id);
glUniform1i(unf_texture, 0);
}
Je suis confus à propos de certaines choses. J'ai quelques questions:
Dans le shader de fragment, la texture reçoit une valeur nulle (par glUniform1i()
). La valeur est-elle vraiment nulle? La valeur est-elle autre chose?
glActiveTexture()
appel est-il vraiment nécessaire?
Pourquoi passons-nous une valeur nulle dans glUniform1i()
?
Le sampler2D
Est lié à un nité de texture . L'appel glUniform
le lie à l'unité de texture zéro. L'appel glActiveTexture()
n'est nécessaire que si vous allez utiliser plusieurs unités de texture (car GL_TEXTURE0
Est de toute façon la valeur par défaut).