你好荒地的人们:),
简介: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代中都不起作用。
感谢您提出任何合理的建议。
答案 0 :(得分:6)
根据文档,“internalformat
必须与format
匹配。在纹理图像处理期间,不支持格式之间的转换。”见the Khronos website。 OpenGL没有此限制,因此此代码适用于Mac OS,但不适用于iOS设备上更有限的OpenGL ES。