OpenGL GL_RGB纹理格式在iOS上不起作用(GL_RGBA效果很好)

时间:2011-06-16 12:20:31

标签: ios opengl-es textures

你好荒地的人们:),

简介:iOS平台上的GL_RGB内部纹理格式存在问题。

在我的应用程序中,我尝试使用GL_RGB而不是GL_RGBA作为内部格式来节省一些内存。 我正在使用下一个代码片来实现这一目标。没有其他任何改变。

glTexImage2D(_textureTargetType, 
     0, 
     GL_RGB,            // pixel internalFormat
     texWidth,          // image width
     texHeight,         // image height
     0,             // border
     GL_RGBA,           // pixel format
     GL_UNSIGNED_BYTE,      // pixel data type
     bitmapData);

在MacOS上,这些变化很流畅,没问题。但是在iOS上,特别是4.3(OpenGL ES2.0),每当我尝试使用此纹理渲染纹理化的polgons时,它就会给我GL_INVALID_OPERATION。除了这种格式之外什么都没有改变我认为问题在于GL_RGB内部格式与OpenGL ES2.0不兼容。这只是我的猜测,我不是大师。

这在模拟器和iPod touch第4代中都不起作用。

感谢您提出任何合理的建议。

1 个答案:

答案 0 :(得分:6)

根据文档,“internalformat必须与format匹配。在纹理图像处理期间,不支持格式之间的转换。”见the Khronos website。 OpenGL没有此限制,因此此代码适用于Mac OS,但不适用于iOS设备上更有限的OpenGL ES。