0

我能够使用 glGenerateMipMap 生成 mipmap,我正在使用 min_filter gl_linear_mipmap_linear。

如果没有 mipmap,当显示与实际纹理大小 (512x512) 大致相同时,纹理看起来很好(如预期的那样),但当我缩小时(如预期的那样)会显示锯齿效果。

使用 mipmap 时,纹理看起来与实际纹理大小 (512x512) 大致相同(如预期的那样),并且在我缩小时(如预期的那样)不显示锯齿效果。然而,我得到难看的模糊纹理,这使得 mipmap 版本无法使用,以至于我可以忍受锯齿。

知道我在这里可能做错了什么吗?我不知道生成的 mipmap 是否最终看起来像那样,或者当它应该选择一个更大的时,是否选择了一个太小的 mipmap。有没有人在 iOS 上的 OpenGL ES 2.0 上使用 glGenerateMipMap 得到了很好的结果?

4

1 回答 1

2

尝试设置提示来生成漂亮的 mipmap,这可能会影响用于生成它们的过滤器,但不能保证,因为效果取决于实现。

glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST) 

您还可以通过在纹理采样代码中设置 lod 偏差来影响产生的模糊度。

为了获得最佳结果,如果支持此扩展,您可以使用 anisotropy。与设置放大和缩小过滤器一起运行:

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0);

而不是 2.0,您可以获得最大各向异性级别并设置以下任何内容:

glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maxAniso);
于 2013-07-02T13:17:11.513 回答