Android glTexSubImage2D不工作

Android glTexSubImage2D不工作,android,opengl-es,android-ndk,Android,Opengl Es,Android Ndk,我正在使用android 4.1,并尝试在NDK上使用glTexSubImage2D,但没有成功。 如果我改用glTexImage2D,它确实有效 这项工作: // Creation: glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tempTexture->mWidth, tempTexture->mHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)tempTexture->mData);

我正在使用android 4.1,并尝试在NDK上使用glTexSubImage2D,但没有成功。 如果我改用glTexImage2D,它确实有效

这项工作:

 // Creation: 
 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tempTexture->mWidth, tempTexture->mHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)tempTexture->mData);

 // Render loop:
  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, info.width, info.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)pixels);
这不起作用(我什么也没画):

我确保宽度和高度是正确的,但仍然不起作用-我得到GL_INVALID_ENUM错误

有什么想法吗

谢谢,
雅科博姆

好的,我解决了。很明显,glTexSubImage2D中使用的宽度并不总是它应该的宽度,有时会稍大一些…

手册页列出了glTexSubImage2D可以发出GL\u INVALID\u ENUM的条件,但您显示的代码显然使用了有效值。您确定错误不是来自上一次呼叫吗?您使用的是什么设备?您好,fadden,错误不是来自上一次调用,因为当我使用glTexImage2D时,仅绘制纹理,并且没有错误。我用的是三星Galaxy S3和S4。你用它来做视频流吗?请注意,glTexImage可能非常慢(它通常会重新创建所有纹理)。类似于此,它确实需要在几秒钟内每秒进行几次更新。但这就是为什么我尝试使用glTexSubImage2D,它应该更快。你能推荐点别的吗?子图像看起来不错。。在这种情况下,不建议使用glTexImage。例如,在桌面opengl中,可以使用像素缓冲区对象。
 // Creation:
 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tempTexture->mWidth, tempTexture->mHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);

 // Render loop:
 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, info.width, info.height, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)pixels);