2016-10-17 3 views
-1

画面に表示された四角形にテクスチャを追加しようとしていますが、すべてのコードを完了した後も正方形はまだ白です。私はテクスチャをロードした後に何かが欠けているかもしれないと思う。SOLを使用してOpenGlテクスチャを読み込むときにテクスチャが表示されない

これは私がテクスチャを作成するために使用するコードです:

void textureManager::createTexture(const char* fileName) { 
    GLuint textureID = SOIL_load_OGL_texture(fileName, SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y); 
    if (0 == textureID) { 
     cout << "error" << endl; 
    } 

    glActiveTexture(GL_TEXTURE0); 
    glBindTexture(GL_TEXTURE_2D, textureID); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 
} 

そして、私はシェーダが

をコンパイルする前に、これは私の頂点とフラグメントシェーダで、頂点とインデックスバッファデータの後にこの関数を呼び出しますコード:

#version 430 
in layout(location = 0) vec2 position; 
in layout(location = 1) vec2 texCoord; 
out vec2 vertex_texCoord; 
void main() 
{ 
    gl_Position = vec4(position, 0.0, 1.0); 
    vertex_texCoord = texCoord; 
} 


#version 430 
out vec4 fragmentColor; 
in vec2 vertex_texCoord; 
uniform sampler2d textureSampler; 
void main() 
{ 
    fragmentColor = texture(textureSampler, vertex_texCoord); 
} 

誰かが私を助けることができますしてください

+0

[mcve]で編集します。私たちが知っているすべてのために 'glUniform()'呼び出しが欠落している可能性があります。 – genpfault

答えて

0

シェーダがうまく見えます。 GLuintのIDも作成しています。あなたはあなたのドローコールのシェイダーに送っていますか?

それは次のようになります。

glBindTexture(GL_TEXTURE_2D, textureID); //texture uniform 

とあなたが最終的にドロー前にvbosを埋めるときに呼び出されます。

関連する問題