我正在使用OpenGLES 2中具有透明度的纹理实现正常的UIKit混合。
在iOS 9.3.5上,在iPad mini上的混合工作正确,适用于具有预乘alpha和后续混合功能的纹理:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
在iOS 10.3.1上,混合在iPad Air上可以正确显示具有非预乘alpha和相同混合功能的纹理。
纹理通过以下行加载:
[glkTextureLoader textureWithContentsOfFile:path
options: @{ GLKTextureLoaderApplyPremultiplication : @NO /* @YES here for iOS 9 */ }
queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)
completionHandler:^(GLKTextureInfo * _Nullable textureInfo,
NSError * _Nullable outError) {
...
}
什么可能导致渲染上的这种差异?