6

OpenGL 2.1+ では、テクスチャを使用する前に呼び出す必要がありglEnable(GL_TEXTURE)ますか? また、テクスチャーに問題があるとしたら、何が原因でしょうか?

アップデート:

デスクトップに OpenGL 2.1 を使用しています。私の手順は次のとおりです。

  1. bmp 24 ビット イメージをロードします (gDebuger をチェックインしたところ、テクスチャが正常に表示されたので、イメージのロード手順が失敗しなかったと確信しています)。

  2. 手順でいくつかの OpenGL 関数をinit()呼び出します。

    glGenTextures(1, &texture_id);
    glBindTexture(GL_TEXTURE_2D, texture_id);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image_width, image_height, 0, GL_BGR, GL_UNSIGNED_BYTE, image_data);
    
  3. そして draw_scene() では:

    glUseProgram(program);
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, texture_id);
    glUniform1i(uniform_texture, 0);
    ...
    
  4. 頂点シェーダー (バージョン 120):

    attribute vec3 vPos;
    attribute vec2 vTexCoord;
    
    uniform mat4 MV;
    uniform mat4 Projection;
    
    varying vec2 fragTexCoord;
    
    void main()
    {
        fragTexCoord = vTexCoord;
        gl_Position = Projection * MV * vPos;
    }
    
  5. フラグメント シェーダー:

    uniform sampler2D my_texture;
    varying vec2 fragTexCoord;
    
    void main()
    {
        gl_FragColor = texture2D(my_texture, fragTexCoord);
    }
    
4

1 に答える 1