【发布时间】:2012-03-10 21:38:42
【问题描述】:
我一直在从 freeglut 切换到 SFML 以创建 OpenGL 3.3 上下文/窗口。现在,当我使用 freeglut 并使用
初始化显示模式时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 位深度缓冲区。另外,我不确定如何访问默认帧缓冲区(或者是否有两个默认帧缓冲区,因为有双缓冲?)。
【问题讨论】: