【发布时间】:2013-10-17 16:17:24
【问题描述】:
更新到 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 中会发生什么变化......仍在努力。
已解决 我的理解是,在我们的案例中,调用 textureWithContentsOfFile 并没有说你想要 GLKTextureLoaderApplyPremultiplication 似乎仍然会产生一个具有预乘 alpha 的图像。通过添加 YES 我们希望它这样做的选项.. 现在 iOS7 上的一切都在工作。
【问题讨论】:
-
您尝试过哪些没有奏效的方法?一些关于如何重现错误的指南会有所帮助,这可能意味着快速获得答案与根本没有答案之间的区别。
-
它没有尝试过或没有尝试过.. 它的引擎在 IOS7 之前工作但现在所有的 alpha 渲染都搞砸了。我已经查看了我们引擎的更改列表,它确保在 IOS7 发布时可能发生的任何更改都没有发生,但事实证明这是徒劳的。我还通过确保正确设置 OpenGL,但这个问题仍然存在。
-
你是如何加载你的纹理的?
-
loaderClass = (NSClassFromString(@"GLKTextureLoader")); GLKTextureInfo* info = [loaderClass textureWithContentsOfFile: path.NSStringValue() options: options error: &error];