Bonjour,
Je suis en train de suivre le tutoriel pdf de ce site http://www.opengl-tutorial.org/
Je suis dans la partie de l'affichage d'une texture qui est en fait, dans mon cas une image png chargée avec SOIL et j'ai apparemment un problème avec la fonction glTexImage2D....


Pour récapituler voici comment j'ai fait pour préparer la texture, avant la boucle infinie :

Initialisation du TAMPON :
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
//Création d'un tampon pour la texture
        GLuint tex;
	glGenTextures(1, &tex);
	glBindTexture(GL_TEXTURE_2D, tex);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);//x side repeat texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);//y side repeat texture
 
	float color[] = { 0.25f, 0.5f, 0.88f, 1.0f };
	glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, color);//border with color in param
 
	//filtering MIN (image reduction) and MAG
	/*glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);*/
 
	//MIPMAPPING
	glGenerateMipmap(GL_TEXTURE_2D);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR / GL_NEAREST);
(La partie MIPMAPPING je sais pas trop quoi mettre exactement, j'ai mis selon ce que j'ai vu sur internet)

Chargement de l'image (avec SOIL) dans la texture :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
        int logoW, logoH;
	unsigned char* logoIMG = SOIL_load_image("logo.png", &logoW, &logoH, 0, SOIL_LOAD_RGB);
	if (logoIMG == NULL) {
		printf("An error occurred while loading image.\n");
		exit(EXIT_FAILURE);
	}
	else {
		printf("Img loaded\n");
		printf("Image Height : %d\nImage Width : %d\n", logoW, logoH);
	}
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, logoW, logoH, 0, GL_RGB, GL_FLOAT, logoIMG);
	SOIL_free_image_data(logoIMG);

Les shaders en question sont tous bêtes :
Vertexshader :
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
#version 330 core
 
// Input vertex data, different for all executions of this shader.
layout(location = 0) in vec3 vertexPosition_modelspace;
layout(location = 1) in vec3 vertex_color;
layout(location = 2) in vec2 texcoord;
 
out vec3 Color;
out vec2 Texcoord;
 
void main(){
	Texcoord = texcoord;
	Color = vertex_color;
    gl_Position.xyz = vertexPosition_modelspace;
    gl_Position.w = 1.0;
 
}
FragmentShader :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
#version 330 core
in vec3 Color;
in vec2 Texcoord;
// Ouput data
out vec4 outputColor;
uniform sampler2D tex;
 
void main()
{
 
	outputColor = texture(tex, Texcoord)* vec4(Color, 1.0);
 
}

Quand j'exécute, une fenêtre toute noire s'affiche, sans afficher la texture, qui fait un peu ramer l'ordi et quitte. Le programme semble quitter avant même de rentrer dans la boucle.
Voici ce que la console m'affiche :
Nom : consolegogole.png
Affichages : 421
Taille : 18,2 Ko

Je soupçonne fortement cette ligne de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, logoW, logoH, 0, GL_RGB, GL_FLOAT, logoIMG);
Il y a apparemment un problème avec cette fonction, j'ai pourtant changé GL_RGB en GL_RGBA, mais sans effet.....
Ce problème est vraiment mystérieux....
(D'ailleurs le code d'erreur renvoyé est toujours le même : -1073741819, à quoi cela pourrait bien correspondre?)
Merci d'avance pour votre aide