0

次を使用して表示しているテクスチャがあります。

    glEnable (GL_BLEND);
glEnable(GL_TEXTURE_2D);
        glBlendFunc (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
        glGenTextures(1, tex);
    glBindTexture (GL_TEXTURE_2D, *tex);
        glBegin (GL_QUADS);
        glTexCoord2f (tx, ty);
        glVertex2f (sx, sy);
        glTexCoord2f (tw, ty);
        glVertex2f (sx + sxmax, sy);
        glTexCoord2f (tw, th);
         glVertex2f (sx + sxmax, sy + symax);
        glTexCoord2f (tx, th);
       glVertex2f (sx, sy + symax);
        glEnd();
        glDisable (GL_TEXTURE_2D);
        glDisable (GL_BLEND);

以下を使用してテクスチャをロードしています。

    GLuint GetTexture(string Filename)
    {
        GLuint tex_ID;

        tex_ID = SOIL_load_OGL_texture(
                     Filename.c_str(),
                     SOIL_LOAD_AUTO,
                     SOIL_CREATE_NEW_ID,
                     SOIL_FLAG_POWER_OF_TWO
                     | SOIL_FLAG_MIPMAPS
                     | SOIL_FLAG_MULTIPLY_ALPHA
                     | SOIL_FLAG_COMPRESS_TO_DXT
                     | SOIL_FLAG_DDS_LOAD_DIRECT
                     | SOIL_FLAG_INVERT_Y
                 );

        if( tex_ID > 0 )
        {

            glEnable( GL_TEXTURE_2D );

            glBindTexture( GL_TEXTURE_2D, tex_ID );

            return tex_ID;
        }
        else
        {
            cout<<"Texture failed to load"<<SOIL_last_result()<<Filename<<endl;
            return 0;
        }
    }

クラスへの参照渡し

テクスチャが正しく読み込まれたかどうかを確認するためにチェックを実行すると、次のようになります。

if(tex==0)

です。さらに、いくつかの値を指定して実行するglColor3f();と、画面に何も表示されません。私は何を間違えましたか?

テクスチャの読み込み/表示に glfw と SOIL を使用しています。

4

1 に答える 1

3
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
glGenTextures(1, tex);
^^^^^^^^^^^^^^^^^^^^^ I hope tex didn't have anything important in it...
glBindTexture (GL_TEXTURE_2D, *tex);
glBegin (GL_QUADS);
....

フレームごとにまったく新しい空のテクスチャを生成しています。これもたまたま不完全です。

一度テクスチャを生成し、それを使用します。

于 2013-08-28T19:34:07.537 に答える