Bonjour,
je suis en train d'apprendre à utiliser openGL 3 et je bloque sur l'utilisation de textures.
J'ai chargé ma texture en mémoire de la carte graphique (je sais qu'elle est bien chargée car je peux la voir avec gDEBugger), ensuite j'envoie l'identifiant de cette texture à mon shader que voici (juste le fragment, le vertex n'est je pense, pas utile) :
Seulement il n'y a que la partie "0.5*vec4(InterpolatedColor, 1.0)" qui fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #version 140 // float en haute précision precision highp float; // Uniform uniform sampler2D tex; // Entrées smooth in vec3 InterpolatedColor; smooth in vec2 texCoord; // Sortie du fragment shader, ira dans le framebuffer principal out vec4 Color; void main() { Color = texture(tex, texCoord) + 0.5*vec4(InterpolatedColor, 1.0); }
j'ai testé énormément de choses mais voici le code actuel permettant d'envoyer la texture :
Voila si vous avec des pistes, ou un lien, je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 glUseProgram(m_shaderProgram); ... /* Envoi de la texture au fragment shader */ glBindTexture(GL_TEXTURE_2D, m_id_tex); glUniform1i(m_uniform_texture, 0); glDrawElements(...);
Sinon deux petites questions dans le même sujet:
1) Les coordonnées pour la fonction texture() dans le shader doivent etre entre 0 et 1 ou entre 0 et width/height ?
2) D’après gDEBugger, glBindTexture semble déprécié, hors je ne trouve rien à ce sujet, est-ce vraiment le cas et si oui que faut il utiliser à le place ?
Merci d'avance.
Partager