OpenGL ES:使用屏幕作为着色器的输入纹理

时间:2016-12-16 17:08:04

标签: opengl-es

我想做与通常做的相反的事情,即采用默认的Framebuffer(屏幕),将其用作片段着色器中的输入纹理。

我知道我能做到

glBindFramebuffer(GL_FRAMEBUFFER,0);
glReadPixels( blah,blah,blah, buf);
int texID = createTexture(buf);
glBindTexture( GL_TEXTURE_2D, texID);
runShaderProgram();

但那是将已经在GPU中的数据复制到CPU(ReadPixels)然后再复制到GPU(BindTexture),不是吗?

我们难道不能“直接”使用屏幕内容并将其提供给着色器吗?

1 个答案:

答案 0 :(得分:1)

这是不可能的 - API根本不会为通用着色器代码公开此功能。

如果你想要渲染到纹理,那么你有什么理由不能以“正常”方式进行渲染并渲染到屏幕外的FBO吗?