1

我知道我们可以创建这样的 FBO(没有颜色附件,只有深度附件),例如,它可以用于阴影贴图。

此外,FBO 完整性检查指出

  • 每个绘图缓冲区必须指定附加了图像的颜色附加点,或者必须是 GL_NONE。(GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER​当为假时)。请注意,如果 OpenGL 4.2 或 ARB_ES2_compatibility 可用,则不会执行此测试。

我的问题是,是否有必要通过使用明确提及这一点

glDrawBuffer(GL_NONE);

如果我没有指定任何颜色附件,OpenGL是否不理解它不会附加任何颜色缓冲区?(我的程序在 OpenGL 4.0 上运行良好,没有提到“glDrawBuffer(GL_NONE);”所以我认为不这样做也没关系,但 wiki 说 FB 完整性检查肯定失败了)

4

1 回答 1

1

在我的应用程序中,使用深度缓冲区进行阴影映射,而不是调用

glDrawBuffer(GL_NONE);

如果此帧缓冲区没有颜色附件,则不会导致不完整的帧缓冲区。

然而,一切都变成了废话,深度纹理显然要么不可写,要么不可读,或者两者兼而有之。

为什么会这样,以及这是否普遍如此,所以我将在中间离开。我只是将我的发现通知您,而我的发现表明您应该谨慎省略此声明。

于 2013-10-28T16:02:41.810 回答