我已经从freeglut切换到用于OpenGL 3.3上下文/窗口创建的SFML。现在,当我使用freeglut与OpenGL:渲染缓冲区,深度缓冲区
unsigned int displayMode = GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH | GLUT_STENCIL;
glutInitDisplayMode (displayMode);
初始化显示模式,我可以简单地然后键入
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_LEQUAL);
glDepthRange(0.0f, 1.0f);
,然后深度测试将被启用。但是,在SFML中,它稍微复杂一些。我不会进入SFML代码,但基本上SFML会为您创建一个上下文/窗口。您可以指定深度位和模板位的数量,但似乎SFML实际上并未分配深度缓冲区并将其附加到默认帧缓冲区。
那么我该怎么做呢?我猜你必须做一些事情,如glGenRenderbuffers
,然后glBindRenderbuffer
然后glRenderbufferStorage
然后glFramebufferRenderbuffer
。该文件有点令人困惑。 glRenderbufferStorage
需要internalformat
参数,我不确定如何表明我想要24位深度缓冲区。另外,我并不确定如何访问默认帧缓冲区(或者是否有两个默认帧缓冲区,因为有双缓冲区?)。