2017-04-12 7 views
0

Ich bin Schritt für Schritt Schritt this tutorial und ich kopierte sogar den gesamten Code, aber es lädt immer noch die Textur. Hier ist mein Code, die Teile, die die Frage betreffen:OpenGL SOIL - Fehler beim Laden der Textur

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. 

Und hier sind meine Shadern:

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

out vec4 color; 

uniform sampler2D ourTexture; 

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

Und

#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; 
} 

I BODEN bin mit Bilddaten zu laden. Ist es zu altmodisch? Was soll ich machen?

+0

Was wie sieht Ihre Struktur Projekt aussehen? Das 'container.jpg' befindet sich wahrscheinlich nicht im Wurzelverzeichnis Ihres Projektverzeichnisses. – Vallentin

+2

check Wert von ** unsigned char * Bild ** – Mozfox

+0

Wie Mozfox sagte: 'if (! Bild) Std :: Cerr <<" Bild laden Fehler \ n ";' – jparimaa

Antwort

0

Das Tutorial code Sie folgen scheint falsch zu sein, da es glActiveTexture noch glUniform nicht aufruft. Siehe die game loop code der anderen Datei am Ende des Tutorials.

Vielleicht sind Sie nicht so etwas wie dieses:

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

Ja, es funktioniert! Vielen Dank. –

+0

[Bitte beachten Sie, dass das LearnOpenGL-Tutorial ** dies beinhaltet.] (Https://learnopengl.com/#!Getting-started/Textures) – Vallentin