问题描述
我尝试从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 (将#修改为@)