我今天通过仪器运行我的应用程序并发现在“glgConvertTo_32”功能中花费了过多的时间。我在别处读到这是因为Apple的纹理格式使用“GL_BGRA和GL_UNSIGNED_INT_8_8_8_8_REV”,而我的代码使用GL_RGBA。
我正在使用glTexture2D如下:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureData);
然而,GL的GL标题中既没有GL_BGRA也没有GL_UNSIGNED_INT_8_8_8_8_REV。是否有其他原因需要大量调用该函数,或者我应该使用不同的纹理格式?
修改 我应该提一下,我正在使用OpenGL ES 2.0。
答案 0 :(得分:1)
我不知道我的问题/解决方案是否真的与您的相关。但你未解决的问题是谷歌在调查我的问题时发现的第一个结果。
虽然我使用OpenGL ES 1.1并且不使用Textures,但我也注意到了我的应用程序 在函数glgConvertTo_32()中花费大约23%的时间。
在eaglLayer.drawableProperties中将kEAGLDrawablePropertyColorFormat的值从kEAGLColorFormatRGBA8更改为kEAGLColorFormatRGB565后,不再调用函数glgConvertTo_32()。应用程序感觉更快,我没有看到视觉差异。