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) :
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);
}
Seulement il n'y a que la partie "0.5*vec4(InterpolatedColor, 1.0)" qui fonctionne.

j'ai testé énormément de choses mais voici le code actuel permettant d'envoyer la texture :
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(...);
Voila si vous avec des pistes, ou un lien, je suis preneur.

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.