我正在尝试从绑定到GL_TEXTURE_EXTERNAL_OES的OpenGL纹理中读取像素/数据。
将纹理绑定到该目标的原因是,为了在Android上获取实时摄像头数据,需要从绑定到GL_TEXTURE_EXTERNAL_OES的OpenGL纹理创建SurfaceTexture。
由于Android使用OpenGL ES,我无法使用glGetTexImage()读取图像数据。
因此,我将目标绑定到FBO,然后使用readPixels()进行读取。这是我的代码:
将纹理绑定到该目标的原因是,为了在Android上获取实时摄像头数据,需要从绑定到GL_TEXTURE_EXTERNAL_OES的OpenGL纹理创建SurfaceTexture。
由于Android使用OpenGL ES,我无法使用glGetTexImage()读取图像数据。
因此,我将目标绑定到FBO,然后使用readPixels()进行读取。这是我的代码:
GLuint framebuffer;
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
//Attach 2D texture to this FBO
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_EXTERNAL_OES, cameraTexture, 0);
status("glFramebufferTexture2D() returned error %d", glGetError());
但是出现错误1282(GL_INVALID_OPERATION),原因未知。