opengl显示白框而不是纹理



我有一个纹理,我正在使用以下内容显示:

    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来加载/显示纹理。

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);
....

您正在生成一个全新的纹理每帧。这也恰好是不完整的。

生成一个纹理一次并使用它。

最新更新