gpt4 book ai didi

ios - glTexSubImage2D -> GL_INVALID_OPERATION

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:20:01 24 4
gpt4 key购买 nike

为什么是glTexSubImage2D()突然导致 GL_INVALID_OPERATION?

我正在尝试将我过时的增强现实应用程序从 iOS4.x 升级到 iOS5.x,但我遇到了困难。我运行的是 iOS5.0。上周我运行了 iOS4.3。我的设备是 iPhone4。


这是我的 captureOutput:didOutputSampleBuffer:fromConnection: 代码的片段

uint8_t *baseAddress = /* pointer to camera buffer */
GLuint texture = /* the texture name */
glBindTexture(GL_TEXTURE_2D, texture);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 480, 360, GL_BGRA, GL_UNSIGNED_BYTE, baseAddress);
/* now glGetError(); -> returns 0x0502 GL_INVALID_OPERATION on iOS5.0, works fine on iOS4.x */

这是我的设置代码的片段

GLuint texture = /* the texture name */
glGenTextures(1, &texture);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);

为简单起见,我在此处插入了硬编码值。在我的实际代码中,我使用 CVPixelBufferGetWidth/Height/BaseAddress 获取这些值。 EAGLContext 使用 kEAGLRenderingAPIOpenGLES2 初始化。

最佳答案

啊.. 我在发布这个问题后立即修复了它。必须将 GL_RGBA 更改为 GL_BRGA。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);

希望对大家有帮助。

顺便说一句。如果您想编写 AR 应用程序,请考虑使用 CVOpenGLESTextureCache 而不是使用 glTexSubImage2d。它应该会更快。

关于ios - glTexSubImage2D -> GL_INVALID_OPERATION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com