首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL mipmap问题

OpenGL mipmap问题
EN

Stack Overflow用户
提问于 2011-12-02 05:39:43
回答 1查看 568关注 0票数 1

我让mipmapping正常工作。但是由于某些原因,在我应用纹理之后,我的应用程序中的所有其他对象都呈现出似乎是纹理的平均颜色。甚至是HUD。有什么我需要说明的吗?代码如下:

代码语言:javascript
复制
GLuint LoadTexture( const char * filename, int width, int height )
{
    GLuint texture;
    unsigned char * data;
    FILE * file;

    file = fopen( filename, "rb" );
    if ( file == NULL ) return 0;
    data = (unsigned char *)malloc( width * height * 3 );
    fread( data, width * height * 3, 1, file );
    fclose( file );

    glGenTextures( 1, &texture );
    glBindTexture( GL_TEXTURE_2D, texture );
    glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );

    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR );

    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );

    gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, data ); 
    free( data );
    return texture;
}

在循环之前被调用,在循环之后被释放。下一部分代码发生在我的while循环中。它在场景中的所有其他对象之前调用。

代码语言:javascript
复制
void makeGround() {

    glBindTexture( GL_TEXTURE_2D, texture );

    GLfloat mat_specular[]      = { 0.5, 0.5, 0.5, 1.0 };
    GLfloat mat_diffuse[]       = { 0.8, 0.8, 0.8, 1.0 };
    GLfloat mat_shininess[]     = { 100.0 };

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);

    //glColor3f(1.0, 1.0, 1.0);

    glPushMatrix();
        glTranslatef(-(size/2), 0.0f, -(size/2));
        glCallList(LIST1);
    glPopMatrix();
}

我应该在绘制不同的元素之间做些什么来防止这种情况发生?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-02 05:55:21

我猜你忘了在渲染完需要纹理的部分后取消绑定纹理或禁用纹理。当您尝试渲染未加纹理的对象时,它们仍然会获得纹理,但由于缺少纹理坐标,它们都使用相同的纹理坐标,因此只能从纹理中获得一种颜色。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8348666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档