我有一个纹理绑定的FBO。现在我想知道我是否可以从纹理中读取并在相同的FBO中显示相同的纹理。
这可能吗?
答案 0 :(得分:1)
这是未定义的行为。 GL规范(for example 3.3 core)有一个关于“反馈循环”的特殊部分。从那里的4.4.3节中引用“渲染反馈循环”小节:
需要采取特殊预防措施,以避免将纹理图像附加到 当前绑定并启用纹理对象时,当前绑定帧缓冲 用于纹理化。这样做可能会导致创建渲染反馈 通过GL渲染操作和同时写入像素之间的循环 当用作当前绑定的纹素时,读取那些相同的像素 质地。在这种情况下,帧缓冲区将被视为帧缓冲完成 (参见4.4.4节),但处于此状态时呈现的片段的值将是 未定义。如所描述的,纹理样本的值也可以是未定义的 在第3.8.11节“渲染反馈循环”下
(规范将继续进一步定义情况。例如,当从不同的mipmap读取而不是渲染时,可以使用相同的纹理对象,但总体情况很清楚。)
您应该知道“未定义的行为”包括达到预期行为的所有内容。我已经看到有人有这样一个反馈循环,并且它确实有效(在他的特定系统上......)进行非常简单的图像过滤操作。但是一旦他加入了更复杂的操作,结果就搞砸了。所以我唯一能给出的建议就是:不要在家里试试......