在读取纹理的同时渲染纹理的可能性

时间:2013-12-22 17:30:10

标签: opengl

我有一个纹理绑定的FBO。现在我想知道我是否可以从纹理中读取并在相同的FBO中显示相同的纹理。

这可能吗?

1 个答案:

答案 0 :(得分:1)

这是未定义的行为。 GL规范(for example 3.3 core)有一个关于“反馈循环”的特殊部分。从那里的4.4.3节中引用“渲染反馈循环”小节:

  

需要采取特殊预防措施,以避免将纹理图像附加到   当前绑定并启用纹理对象时,当前绑定帧缓冲   用于纹理化。这样做可能会导致创建渲染反馈   通过GL渲染操作和同时写入像素之间的循环   当用作当前绑定的纹素时,读取那些相同的像素   质地。在这种情况下,帧缓冲区将被视为帧缓冲完成   (参见4.4.4节),但处于此状态时呈现的片段的值将是   未定义。如所描述的,纹理样本的值也可以是未定义的   在第3.8.11节“渲染反馈循环”下

(规范将继续进一步定义情况。例如,当从不同的mipmap读取而不是渲染时,可以使用相同的纹理对象,但总体情况很清楚。)

您应该知道“未定义的行为”包括达到预期行为的所有内容。我已经看到有人有这样一个反馈循环,并且它确实有效(在他的特定系统上......)进行非常简单的图像过滤操作。但是一旦他加入了更复杂的操作,结果就搞砸了。所以我唯一能给出的建议就是:不要在家里试试......