从Android上的framebuffer中读取

问题描述

我尝试从Android(GLES 3.1)上的默认帧缓冲区中获取数据。 Andriod 6.0版。设备:Levono TAB 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_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,GL_RGBA,250,0);

在glCopyTexImage2D之后,我得到了
ERROR: 1282 (GL_INVALID_OPERATION)
从文档中获得的含义是:如果当前绑定的帧缓冲区的格式不包含internalformat基本格式所需的组件的超集,则生成GL_INVALID_OPERATION。

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...