我想做与通常做的相反的事情,即采用默认的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),不是吗?
我们难道不能“直接”使用屏幕内容并将其提供给着色器吗?
答案 0 :(得分:1)
这是不可能的 - API根本不会为通用着色器代码公开此功能。
如果你想要渲染到纹理,那么你有什么理由不能以“正常”方式进行渲染并渲染到屏幕外的FBO吗?