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);
绑定到您的帧缓冲区实现。
我有一个场景,里面有一个茶壶网格。 我正在使用一个 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);
绑定到您的帧缓冲区实现。