这是我的(包装的)OpenGL调用,它导致GL_INVALID_OPERATION:
GLTextures.TexImage2D(TexImage2DTarget.TEXTURE_2D, 0, TexImageInternalFormat.LUMINANCE_ALPHA, Width, Height, TexImageFormat.LUMINANCE_ALPHA, TexImagePixelType.UNSIGNED_BYTE, source.GetData());
Run Code Online (Sandbox Code Playgroud)
此调用适用于Windows但不适用于iOS,在Windows中一切正常并且显示纹理.我在iOS和Windows上使用相同的枚举值,甚至着色器也是相同的(在iOS上有一些精确的提示).最多的纹理也适用于iOS.
我通过思考它在桌面上运行而不是在 iOS 上运行这一事实发现了这个问题。当格式不同时,使用format和的 OpenGL 纹理internal format会从一种格式转换为另一种格式,但 Apple 的 OpenGL ES 2.0 实现不支持此功能。
我想到这可能是纹理不起作用和GL_INVALID_OPERATION. 我检查了我的枚举,发现LUMINANCE_ALPHA一个枚举中的定义没有分配任何值,只是使用了+1之前的定义编号。OpenGL在桌面上忽略了这一点,因为该数字是一种有效的纹理格式,在iOS上它失败了。
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |