0
我想做与正常情况相反的工作,即采用默认的Framebuffer(屏幕),将其用作我的片段着色器中的输入纹理。OpenGL ES:使用屏幕作为着色器的输入纹理
我知道我可以做
glBindFramebuffer(GL_FRAMEBUFFER,0);
glReadPixels(blah,blah,blah, buf);
int texID = createTexture(buf);
glBindTexture(GL_TEXTURE_2D, texID);
runShaderProgram();
但这是复制数据是已经在GPU到CPU(ReadPixels),然后返回到GPU(BindTexture),不是吗?
难道我们不知道如何'直接'使用屏幕上的内容并将其提供给着色器?
谢谢。没有“强有力”的理由让我不要用“正常”的方式。我正在编写一种OpenGL库,如果无论在哪里接受用户创建的FBO作为方法的参数,它都会接受默认的FBO。但是,如果为此付出的代价是CPU之旅并回到GPU(这对我的API的用户来说大部分是“隐藏的”),那么不行,我宁愿排除屏幕。 – Leszek