我能够使用 glGenerateMipMap 生成 mipmap,并且我正在使用 min_filter gl_linear_mipmap_linear。
没有 mipmap 时,纹理在与实际纹理大小 (512x512) 相同的大小下显示时看起来不错(如预期的那样),但当我缩小时显示锯齿效果(如预期的那样)。
使用 mipmap 时,纹理在与实际纹理大小 (512x512)(如预期)相同的大小下显示时看起来很好,并且在我缩小时不会显示锯齿效果(如预期)。然而,我得到了丑陋的模糊纹理,这使得 mipmap 版本无法使用,以至于我还不如忍受别名。
知道我在这里做错了什么吗?我不知道生成的 mipmap 是否最终看起来像那样,或者在应该选择较大的 mipmap 时是否选择了太小的 mipmap。有没有人在 iOS 的 OpenGL ES 2.0 上使用 glGenerateMipMap 实际上取得了好的结果?
最佳答案
尝试设置提示以生成漂亮的 mipmap,这可能会影响用于生成它们的过滤器,但不能保证,因为效果取决于实现。
glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST)
您还可以通过在纹理采样代码中设置 lod 偏差来影响产生的模糊度。
如果支持此扩展,您可以使用各向异性以获得最佳结果。与设置放大和缩小过滤器一起运行:
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0);
您可以获得最大各向异性级别并设置低于它的任何值,而不是 2.0:
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maxAniso);
关于ios - 有人在 iOS 上的 OpenGL ES 2.0 中使用 glGenerateMipmap 得到模糊不可用的纹理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17425996/