我使用GLKTextureLoader
加载32位PNG(在GIMP中创建)。返回的GLKTextureInfo
在模拟器和iPad上显示GLKTextureInfoAlphaStateNonPremultiplied
alphaState
。尝试glBlendFunc
和GLKTextureLoader我可以在iPad或模拟器上使用它,但不能同时使用它们!
GLKTextureLoader没有选项,并且使用以下混合功能:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
我上了iOS模拟器(注意文本上的光晕很明亮)
在第4台iPad上(注意文字上的光线是黑暗的)
为何与众不同? alphaState
是一样的。它可能是什么?
答案 0 :(得分:3)
我在Apple Discussion找到了答案。
我有完全相同的问题。 XCode将转换PNG图像,使得标题块为CgBI(而不是IHDR),并且会混淆第三方库,如libpng,因为Apple标题中的字符表示数据是私有格式。此操作仅针对目标设备进行 - 模拟器不受影响。有四种方法可以解决这个问题(从最简单到最难)。
1)将图像重命名为其他内容(例如.ppng),XCode打包工具将忽略您的文件。
2)根据以下链接(http://www.imgtec.com/powervr/insider/sdk/KhronosOpenGLES1xMBX.asp),您需要为每个目标添加以下构建设置定义。 IPHONEOPTIMIZEOPTIONS = -skip-PNGs我很遗憾地说我仍然没有想到在XCode项目设置中添加它的位置。
3)教你的PNG解码器来处理Apple的CgBI格式。
4)使用Cocoa UIImage类或Texture2D.m类。
编辑:在“构建设置”的“打包”中,我找到了“压缩PNG文件”选项,默认为“是”。