2017-04-12 7 views
0

Je suis this tutorial étape par étape et je copier-collé même tout le code, mais il ne parvient toujours pas à charger la texture. Voici mon code, les parties qui concernent la question:SOL OpenGL - Défaut de charge Texture

GLuint texture; 
glGenTextures(1, &texture); 
glBindTexture(GL_TEXTURE_2D, texture); // All upcoming GL_TEXTURE_2D operations now have effect on this texture object 
             // Set the texture wrapping parameters 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // Set texture wrapping to GL_REPEAT (usually basic wrapping method) 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
// Set texture filtering parameters 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
// Load image, create texture and generate mipmaps 
int width, height; 
unsigned char* image = SOIL_load_image("container.jpg", &width, &height, 0, SOIL_LOAD_RGB); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); 
glGenerateMipmap(GL_TEXTURE_2D); 
SOIL_free_image_data(image); 
glBindTexture(GL_TEXTURE_2D, 0); // Unbind texture when done, so we won't accidentily mess up our texture. 

Et voici mes shaders:

#version 330 core 
in vec3 ourColor; 
in vec2 TexCoord; 

out vec4 color; 

uniform sampler2D ourTexture; 

void main() 
{ 
    color = texture(ourTexture, TexCoord); 
} 

Et

#version 330 core 
layout (location = 0) in vec3 position; 
layout (location = 1) in vec3 color; 
layout (location = 2) in vec2 texCoord; 

out vec3 ourColor; 
out vec2 TexCoord; 

void main() 
{ 
    gl_Position = vec4(position, 1.0f); 
    ourColor = color; 
    TexCoord = texCoord; 
} 

J'utilise SOL pour charger des données d'image. Est-il trop démodé? Que devrais-je faire?

+0

À quoi ressemble la structure de votre projet comme? Le fichier 'container.jpg' n'est probablement pas dans la racine de votre répertoire de projet. – Vallentin

+2

vérifier la valeur de ** unsigned char * image ** – Mozfox

+0

Comme Mozfox a dit: 'si (! Image) std :: cerr <<" erreur de chargement de l'image \ n ";' – jparimaa

Répondre

0

Le tutoriel code que vous suivez semble être faux car il n'appelle pas glActiveTexture ni glUniform. Voir le game loop code de l'autre fichier à la fin du tutoriel.

Peut-être vous manque quelque chose comme ceci:

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, texture); 
glUniform1i(glGetUniformLocation(ourShader.Program, "ourTexture"), 0); 
+0

Oui ça marche! Je vous remercie. –

+0

[Pour info le didacticiel LearnOpenGL ** did ** include this.] (Https://learnopengl.com/#!Getting-started/Textures) – Vallentin