iOS7中的OpenGL纹理变色

时间:2013-08-17 05:04:28

标签: opengl-es-2.0 ios7

我用iOS7 Beta 5取出了Xcode 5的最新测试版,以检查与我使用OpenGL ES 2.0的应用程序的兼容性。在新的模拟器中启动我的应用程序后,我遇到了一个非常变色的屏幕。不是说整个屏幕都变色了,只有GLView。红色变成了蓝色,蓝色变成了蓝色,绿色变成了蓝色。

我上下搜索谷歌,结果甚至没有结果。下面是一个足球场的渲染,以显示变色。田径目标特别引人注目。

GL启用选项

glEnable(GL_CULL_FACE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
self.effect.texture2d0.enabled = true;
glEnable(GL_DEPTH_TEST);//Only when drawing field goals

外观(iOS6)

enter image description here

现在看起来如何(iOS7)

enter image description here

1 个答案:

答案 0 :(得分:0)

GLKit在iOS7中处理纹理加载的方式一定有所改变。我用简单的单层PNG替换了其中几个纹理,没有问题。 作为一种解决方法,我能够将每个纹理从PSD导出为TIFF格式,不会出现变色或图像质量下降。 TIFF似乎是要走的路; GLKit对格式没有任何问题,它很乐意支持透明度,奇怪的是,这是另一个我遇到变色的问题。

texturename = tracktexture1.name;
glDeleteTextures(1, &texturename);
tracktexture1 = [GLKTextureLoader textureWithContentsOfFile:[[NSBundle mainBundle]pathForResource:[NSString stringWithFormat:@"%@%i",trackname, 1] ofType:@"tiff"] options:options error:&error];