【问题标题】:OpenGL Alpha Blend Error after IOS7 updateIOS7 更新后的 OpenGL Alpha 混合错误
【发布时间】: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];

标签: ios opengl-es ios7


【解决方案1】:

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

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

NSError *err;
GLKTextureInfo *ti = [GLKTextureLoader textureWithContentsOfFile:path options:options error:&err];

【讨论】:

  • textureWithContentsOfFile 的默认选项可能会随着 IOS7 更新而改变.. 或者我应该说你知道他们是否改变了..?
  • 我不知道他们有没有。文档说明 如果未指定密钥,则在应用预乘的情况下默认值为 NO。我只知道相同的 .png 文件在 iOS6 下加载时是透明的,在切换到 iOS7 后,透明胶片变得不透明(在我的情况下为白色)。将“GLKTextureLoaderApplyPremultiplication”明确添加为“是”后,纹理已修复。不幸的是,我无法用 iOS6 轻松地测试它。
  • 是的,成功了。我知道以这种方式加载纹理的 pre iOS7 会产生预编译的 alpha,我不知道这是否恰好是 iOS5 中存在的错误.我所知道的是我更新的借调我们制作的所有游戏/应用程序都开始出现这个问题。感谢您的帮助..
  • NSDictionary * options = @{GLKTextureLoaderApplyPremultiplication:@YES};
猜你喜欢
  • 1970-01-01
  • 2011-12-14
  • 2013-11-16
  • 2015-03-30
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多