深度缓冲区似乎不起作用 - OpenGL Shader

时间:2016-07-01 12:03:25

标签: c++ opengl shader glfw depth-buffer

我在GLFW和GLEW中使用openGL。我使用着色器渲染所有内容但似乎深度缓冲区不起作用。 我用于3D渲染的着色器是:

顶点着色器

#version 410\n
in vec2 texture_coordinates;
uniform sampler2D basic_texture;
out vec4 frag_colour;
void main() {
    vec4 texel = texture(basic_texture, vec2(texture_coordinates.x, 1 - texture_coordinates.y));
    frag_colour = texel;
};

片段着色器

glEnable(GL_DEPTH_BUFFER);
glDepthFunc(GL_NEVER);

glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CCW);

我也启用深度缓冲和剔除脸

var time1 = "13:40:00";
var time1 = moment(time1, "hh:mm:ss");
var time2 = time1.diff(moment(), 'seconds')

这就是它的样子:

2 个答案:

答案 0 :(得分:2)

您未启用深度测试。将glEnable(GL_DEPTH_BUFFER);更改为glEnable(GL_DEPTH_TEST);可以使用glGetError()检测到此错误。

答案 1 :(得分:1)

如同SurvivalMachine所说,将GL_DEPTH_BUFFER更改为GL_DEPTH_TEST。并且还要确保在主循环中您在任何绘图命令之前调用glClear(GL_DEPTH_BUFFER_BIT)