2013-07-02 41 views
0

我能够使用glGenerateMipMap生成mipmap并且我正在使用min_filter gl_linear_mipmap_linear。任何人在iOS上使用glGenerateMipmap在OpenGL ES 2.0中获取模糊的不可用纹理?

没有mipmaps时,纹理显示与实际纹理大小(512x512)大致相同(如预期),但在缩小时(如预期的那样)显示别名效果。

使用mipmap时,在与实际纹理大小(512x512)(如预期的)相同的大小显示时纹理看起来很好,并且在缩小(如预期的)时不显示混叠效果。然而,我得到丑陋的模糊纹理,这使得mipmap版本无法使用到我可能忍受的别名。

任何想法我可能在这里做错了吗?我不知道生成的mipmap是否会看起来像这样,或者是否应该选择较大的mipmap太小。在iOS上的OpenGL ES 2.0上使用glGenerateMipMap有没有人获得好结果?

+0

请提供一些更多的细节,你生成所有级别或只有其中的一些,你是否触摸了TEXTURE_BASE_LEVEL和TEXTURE_MAX_LEVEL值? – Vasaka

+0

我没有做这样的修改,我只是使用glGenerateMipMap并应用过滤器。 –

回答

1

尝试设置提示以生成漂亮的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); 
+0

谢谢。这个提示似乎对我的情况没有任何影响。 –

+0

@ SkillM2您需要进行各向异性过滤,更新了答案。 – Vasaka

+0

我感谢你的帮助,不幸的是,这并没有帮助,纹理仍然显得模糊。你是否已经在iOS平台上使用了带有OpenGL ES 2.0的glGenerateMipmap并取得了良好的效果? –