从Android上的帧缓冲区读取

从Android上的帧缓冲区读取,android,opengl-es,framebuffer,Android,Opengl Es,Framebuffer,我尝试从Android(GLES 3.1)上的默认帧缓冲区获取数据。Andriod版本6.0。设备:Levono标签2 A-10。 如果我使用glReadPixels,它可以正常工作,但我希望避免将数据复制到CPU,并将此数据绑定到计算着色器。 代码如下所示: glReadBuffer(GL_BACK); GLuint texture; glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D, texture); glTexPar

我尝试从Android(GLES 3.1)上的默认帧缓冲区获取数据。Andriod版本6.0。设备:Levono标签2 A-10。 如果我使用glReadPixels,它可以正常工作,但我希望避免将数据复制到CPU,并将此数据绑定到计算着色器。 代码如下所示:

glReadBuffer(GL_BACK);

GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 300, 250);

glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 300, 250, 0);
在glCopyTexImage2D之后,我得到了错误:1282(GL\u无效\u操作)
这来自文档意味着:如果当前绑定的帧缓冲区格式不包含internalformat的基本格式所需的组件超集,则生成GL\u无效\u操作


我尝试了不同格式的纹理,但没有成功。

您可能想说明您正在测试的设备/操作系统版本。您确定错误来自
glCopyTexImage2D
,并且不是挂在
glReadBuffer
或其他调用上吗?是的,我在每次调用gl函数后检查glGetError(代码示例中未显示)