1

目前我在 gDebugger 中遇到了一个非常奇怪和令人沮丧的问题,我希望有人能看到我做错了什么。

因此,作为一些背景信息,在我的代码中,我有一堆 FBO 以完成以下类型的场景:

-我绑定了一个 FBO 以将一些东西渲染到纹理上,以便在其上的某个点运行后处理着色器

- 在完成该 FBO 之前,我将另一个 FBO 推入堆栈并绑定那个,以便我可以将一些东西渲染到该纹理,在其上运行后处理着色器,然后将该 FBO 纹理的内容渲染到原来的FBO

尽管在功能上这工作得很好,但在 gDebugger 中调试它已被证明是一场噩梦,因为出于某种原因,gDebugger 显示每当我将任何内容渲染到 FBO 时都会更新多个纹理。

我附上了一些图片来解释:

在这里的第一个中,Tex 1 是我用于所有 FBO 的深度/模板纹理(不过,作为旁注,我在没有将深度/模板纹理附加到 FBO 时测试了同样的问题,它仍然会发生,所以我认为这不是一个因素)。Tex 2 是附加到 FBO 1 的纹理,Tex 3 是附加到 FBO 2 的纹理。此时,FBO 1 被绑定。尽管如此,每当渲染任何内容时,它都会更新纹理 3 (FBO 2)。

在渲染下一个纹理之前

正如您在这张图片中看到的(单次平局的结果),FBO 1 已更新(如预期的那样),但 FBO 2 也已更新。 渲染下一个纹理后

现在即使这也不是那么糟糕 - 毕竟,我现在没有使用 FBO 2,谁在乎 gDebugger 是否更新纹理?真正的问题是,如果我绑定 FBO 2 并清除其颜色缓冲区,gDebugger 也会清除 FBO 1(纹理 2)!然后,如果我渲染到 FBO 2,FBO 1 也会渲染到!

现在正如我上面提到的,尽管有这种奇怪的行为,但实际上所有功能都按预期工作。也就是说,在清除 FBO 2 表明 FBO 1 也已清除的情况下,它实际上并没有被清除。但是,当各种 FBO 中的图像信息似乎不准确时,尝试调试问题几乎是不可能的!

那么,我做错了吗?或者有没有办法在 gDebugger 中解决这个问题?

提前致谢!

瑞安

4

0 回答 0