4

更新到 IOS 7 后,我看到启用 GL_BLEND 且混合功能设置为 GL_ONE、GL_ONE_MINUS_SRC_ALPHA 的图像渲染出现错误。我检查了尚未更新到 IOS 7 的设备没有显示此问题。

解释我所看到的。- 具有非零 alpha 的图像呈现为非透明(不透明)。

这导致在艺术周围显示白色轮廓,这些轮廓混合为完整的 alpha 以隐藏锯齿状边缘。

在此处输入图像描述

注意构成这个小家伙的每个部分周围的渲染工件。

需要注意的另一件事是艺术图像未压缩到 PVR4。

再次记住,这一切都在 IOS7 之前工作,没有图形错误。

谢谢你的帮助。。

渲染注释: glEnable(GL_BLEND) glBlendEquation( GL_FUNC_ADD ) glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA )

在研究了这个之后..我开始认为预编译的 alpha 发生了一些变化。我不知道 iOS 7 中会发生什么变化......仍在努力。

解决 了我的理解是,在我们的案例中,没有说你想要 GLKTextureLoaderApplyPremultiplication 的调用 textureWithContentsOfFile 似乎仍然会产生一个具有预乘 alpha 的图像。通过添加 YES 的选项,我们希望它这样做......现在 iOS7 上的一切都在工作。

4

1 回答 1

4

如果您使用 的方法来加载纹理-textureWithContentsOfFile:options:errorGLKTextureLoader那么您可以尝试将GLKTextureLoaderApplyPremultiplicationset添加YES到选项字典中。

NSDictionary * options = @{GLKTextureLoaderApplyPremultiplication:@YES};

NSError *err;
GLKTextureInfo *ti = [GLKTextureLoader textureWithContentsOfFile:path options:options error:&err];
于 2013-10-18T00:04:53.573 回答