OpenGL 没有绘制离相机最近的片段

OpenGL not drawing nearest fragment to the camera

我有一个场景,里面有一个茶壶网格。 我正在使用一个 fragment 着色器使用一个值等于 10 的光源照亮它。

当场景渲染到默认帧缓冲区时,一切似乎都很好。

但是,如果它在自定义帧缓冲区中呈现,结果将如下所示:

OpenGL 似乎更喜欢在网格“末端”定义的三角形。

我希望帧缓冲区包含 16bits floats 以便我可以存储大于 1.0 的值。

对不起我的英语。

我忘记添加深度渲染缓冲区并使用 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

清除它

为此,添加:

GLuint rboDepth;
glGenRenderbuffers(1, &rboDepth);
glBindRenderbuffer(GL_RENDERBUFFER, rboDepth);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, width(), height());
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rboDepth);

绑定到您的帧缓冲区实现。