【发布时间】:2012-12-16 19:31:15
【问题描述】:
我使用此代码在带有 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 来切换某些状态吗?
【问题讨论】:
-
GL_TEXTURE_MAG_FILTER 的有效值仅是 GL_LINEAR 和 GL_NEAREST。没有用于放大的 mipmapping。