我可以渲染到相同的纹理,然后传递给我的着色器吗?
gl.glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, currentTex, 0);
gl.glActiveTexture(GL_TEXTURE0);
gl.glBindTexture(GL_TEXTURE_2D, currentTex);
gl.glUniform1i(texGlId, 0);
// ...
// drawCall
答案 0 :(得分:1)
从ES 2.0规范的第80页开始,"渲染反馈循环":
当纹理附加到当前绑定的帧缓冲区对象的附着点时,可能会发生渲染反馈循环。在这种情况下,渲染结果是未定义的。具体条件详见4.4.4节。
答案 1 :(得分:0)
我们应该避免它。渲染结果将是未定义的,可能取决于GPU。
https://www.khronos.org/opengles/sdk/docs/man/xhtml/glFramebufferTexture2D.xml
注释
当纹理对象当前被绑定并可能被当前顶点或片段着色器采样时,需要采取特殊预防措施以避免将纹理图像附加到当前绑定的帧缓冲区。这样做可能导致在通过渲染操作写入像素和在当前绑定纹理中用作纹素时同时读取那些相同像素之间创建“反馈循环”。在这种情况下,帧缓冲区将被视为帧缓冲区完成,但在此状态下渲染的片段的值将是未定义的。纹理样本的值也可能未定义。