深度缓冲区不与GLFW一起使用

时间:2017-12-01 06:15:02

标签: opengl glfw

我有提示:

glfwWindowHint(GLFW_DEPTH_BITS, GL_TRUE);

然后我有:

glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);

当我画画时

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

但结果显然没有使用深度缓冲...

我觉得

glfwWindowHint(GLFW_DEPTH_BITS, GL_TRUE);

可能不正确?

我正在使用GLFW 3,OpenGL 4.1,macOS El Capitan 10.11.6

1 个答案:

答案 0 :(得分:1)

根据GLFW指南[1],GLFW_DEPTH_BITS不能用于启用或禁用深度测试,而是用于设置深度缓冲区的大小。

glfwWindowHint(GLFW_DEPTH_BITS, GL_TRUE);的作用是,它将深度缓冲区大小设置为1位,因为GL_TRUE定义为1。 OpenGL实现甚至可能不支持1位深度缓冲区大小,您可以使用glGetError [2]进行检查。

在Windows上,您通常不必设置深度缓冲区格式,它只是开箱即用的GLFW。但是,我记得在iOS上配置framebuffer是必要的。因此,只需删除行glfwWindowHint(GLFW_DEPTH_BITS, GL_TRUE);,看看会发生什么。

[1] http://www.glfw.org/docs/latest/window_guide.html

[2] https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glGetError.xml