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

Gre*_*ryM 3 textures opengl-es ios

你好荒地人:),

简介: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);
Run Code Online (Sandbox Code Playgroud)

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

这不适用于模拟器或iPod touch第4代.

谢谢你提出任何合理的建议.

Mr.*_*rna 6

根据文档," internalformat必须匹配format.纹理图像处理期间不支持格式之间的转换." 请参阅Khronos网站.OpenGL没有此限制,因此此代码适用于Mac OS,但不适用于iOS设备上更有限的OpenGL ES.