Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL未绘制离相机最近的片段_Opengl_Mesh_Fragment Shader_Framebuffer - Fatal编程技术网

OpenGL未绘制离相机最近的片段

OpenGL未绘制离相机最近的片段,opengl,mesh,fragment-shader,framebuffer,Opengl,Mesh,Fragment Shader,Framebuffer,我有一个场景,里面有一个茶壶网。 我正在使用framgment着色器,使用一个值等于10的光源来照亮它 当场景渲染到默认帧缓冲区时,一切似乎都正常 但是,如果在自定义帧缓冲区中渲染,结果如下所示: OpenGL似乎更喜欢在网格的“末端”定义三角形 我希望帧缓冲区包含16位浮点值,以便存储大于1.0的值 对不起我的英语。我忘了添加深度渲染缓冲区,并使用glClear(GL_COLOR\u BUFFER\u BIT | GL_depth\u BUFFER\u BIT)清除它 为此,请添加: GLui

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

当场景渲染到默认帧缓冲区时,一切似乎都正常

但是,如果在自定义帧缓冲区中渲染,结果如下所示:

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

我希望帧缓冲区包含
16位浮点值
,以便存储大于
1.0
的值


对不起我的英语。

我忘了添加深度渲染缓冲区,并使用
glClear(GL_COLOR\u BUFFER\u BIT | GL_depth\u BUFFER\u 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);

绑定到帧缓冲区实现。

可能您没有将深度缓冲区附加到帧缓冲区。哦。你可能是对的。我没想到。我现在就做。@rabbi76,我刚刚在我的帧缓冲区中添加并附加了一个深度渲染缓冲区,现在我没有得到任何结果。我刚刚发现我做错了什么:我忘了使用
glClear(GL\u COLOR\u buffer\u BIT |**GL\u depth\u buffer\u BIT**)清除drawcall中的深度缓冲区如果您在问题中添加了任何代码,可能会有人指出这一点。请阅读。