Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios glTexSubImage2D->;GL_无效的_操作_Ios_Opengl Es 2.0_Augmented Reality - Fatal编程技术网

Ios glTexSubImage2D->;GL_无效的_操作

Ios glTexSubImage2D->;GL_无效的_操作,ios,opengl-es-2.0,augmented-reality,Ios,Opengl Es 2.0,Augmented Reality,为什么突然导致GL\U操作无效? 我正试图将我过时的增强现实应用程序从iOS4.x升级到iOS5.x,但我遇到了一些困难。我运行iOS5.0。上周我运行了iOS4.3。我的设备是iPhone4 下面是我的captureOutput:didOutputSampleBuffer:fromConnection:code中的一个片段 uint8_t *baseAddress = /* pointer to camera buffer */ GLuint texture = /* the texture

为什么突然导致GL\U操作无效?

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


下面是我的
captureOutput:didOutputSampleBuffer:fromConnection:
code中的一个片段

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初始化。

Ah。。发布此问题后,我立即修复了它。必须将GL_RGBA更改为GL_BRGA

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
希望它能帮助别人


< BTW. >如果您想编写AR应用程序,则考虑使用<代码> CVopGuntStExtucRebug < /C> >而不是使用<代码> GLXTEXIMAGE2D2。它应该更快。

在iOS 5.0上,纹理缓存要快得多。我的iPhone 4S视频帧上传和处理时间从9.0毫秒到1.8毫秒。我描述了我是如何将其集成到我的框架中的,回答如下:谢谢!!!在我有GLTEXAGE2D(…,GL_-BGRA,…,GL_-BGRA,…)之前,它曾经工作过。将第一个切换到GL_RGBA解决了问题(glTexSubImage2D仍在使用GL_BGRA)。有人能解释为什么glTexSubImage2D需要GL_BGRA而不是GL_RGBA吗????这帮了我很大的忙,但我不明白为什么会不同。太棒了!!!我也有同样的问题(glTexImage2D给出GL_无效的_操作)。或者更确切地说,其他人有这个问题,我必须为他们解决。我很少接触OpenGL代码,所以这是一个救命稻草。:-)