ios - 有人在 iOS 上的 OpenGL ES 2.0 中使用 glGenerateMipmap 得到模糊不可用的纹理吗?

标签 ios opengl-es-2.0 mipmaps

我能够使用 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/

相关文章:

java - Android 游戏 GLSurfaceView 时间处理

ios - 你能在 Opengles 2.0 的 mipmap 级别上混合纹理格式吗

javascript - generateMipmap 完成了吗?

android - 为什么 mipmap 文件夹不显示在 XML Android Studio 的建议中?

iphone - 什么类型的应用程序允许在 iPhone 中自动启动?

ios - 获取本地音频文件的AVURLAsset

iPhone:如何在自定义单元格的动态数量上管理 UITextfield 委托(delegate)方法

ios - 使用 CollectionView 删除 Core Data 中的记录

opengl-es - OpenGL 着色器的显式与自动属性位置绑定(bind)

c++ - "GL_UNPACK_SWAP_BYTES"未在此范围及其他范围内声明