2017-04-12 14 views
0

私はthis tutorialをステップバイステップで実行していますが、コード全体をコピーして貼り付けても、テクスチャを読み込むことができません。ここに私のコードは、問題に関係する部品です:OpenGL SOIL - テクスチャの読み込みに失敗する

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. 

そして、ここでは私のシェーダです:

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

out vec4 color; 

uniform sampler2D ourTexture; 

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

そして

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

私は画像データをロードするために土を使用しています。それは時代遅れですか?私は何をすべきか?

+0

何あなたのプロジェクトの構造がどのように見えるん:

はたぶん、あなたはこのような何かが欠けていますか? 'container.jpg'はおそらくあなたのプロジェクトディレクトリのルートにありません。 – Vallentin

+2

チェック値** unsigned char * image ** – Mozfox

+0

Mozfoは次のように言っています: 'if(!image)std :: cerr <<"画像読み込みエラー\ n ";' – jparimaa

答えて

0

チュートリアルcodeは、glActiveTextureglUniformもコールしていないため、間違っているようです。チュートリアルの最後に他のファイルのgame loop codeを参照してください。

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

はい、動作します!ありがとうございました。 –

+0

[LearnOpenGLチュートリアル**に**含まれています。](https://learnopengl.com/#!Getting-started/Textures) – Vallentin

関連する問題