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

时间:2018-11-10 19:50:10

标签: opengl mesh fragment-shader framebuffer

我有一个带有茶壶网的场景。 我正在使用片段着色器通过值为10的光源对其进行照明。

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

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

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

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

对不起,我的英语。

1 个答案:

答案 0 :(得分:1)

我忘记添加深度renderBuffer并使用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);

绑定到帧缓冲实现时。