2

我使用此代码在带有 mipmap 的图像之间切换:

if ( tex->hasMipMaps ) {
            glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
            glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR );
        }
        else {
            glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
            glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
        }

但是会发生这种情况: 在此处输入图像描述

该表是在没有 mipmap 的情况下呈现的,但是当我将寄存器纹理代码更改为:

   // if ( tex->hasMipMaps ) {
                glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
                glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR );
            //}
            //else {
            //  glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
            //  glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
            //}

结果如下: 在此处输入图像描述 mipmap 有效,但我的字体纹理有点缺失,有没有办法渲染带有 mipmaps 的纹理(如模型)和一些没有 mipmaps 的纹理(如字体、粒子)?我需要调用 glTexParameteri 来切换某些状态吗?

4

1 回答 1

1

如您所见,没有完整的 mipmap 集的纹理对象(通常)将呈现白色。

如果您的某些纹理没有 mipmap,则必须在每个网格级别启用/禁用 mipmap(假设每个网格一个纹理)。

于 2012-12-16T19:39:35.653 回答