IOS7更新后OpenGL Alpha混合错误
更新到IOS 7后,我发现启用了GL_BLEND的图像渲染出现错误,混合函数被设置为GL_ONE,GL_ONE_MINUS_SRC_ALPHA ..我检查了没有更新到IOS 7的设备不显示此问题。
我所看到的解释。 - 具有任何不为零的字母的图像呈现为不透明(不透明)。
这导致了艺术周围出现的白色轮廓,这些轮廓是为了隐藏锯齿状边缘而混合到完整的阿尔法。
注意组成这个小家伙的每个部件周围的渲染伪像。
另外需要注意的是,艺术图像不会压缩到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上的所有功能都可以正常工作。
如果您正在使用加载纹理的方法-textureWithContentsOfFile:options:error
of GLKTextureLoader
,那么您可以尝试将GLKTextureLoaderApplyPremultiplication
设置为YES
添加到选项字典中。
NSDictionary * options = @{GLKTextureLoaderApplyPremultiplication:@YES};
NSError *err;
GLKTextureInfo *ti = [GLKTextureLoader textureWithContentsOfFile:path options:options error:&err];
链接地址: http://www.djcxy.com/p/34007.html