Я переключился с freeglut на SFML для создания контекста/окна OpenGL 3.3. Теперь, когда я использую freeglut и инициализировать режим отображения сOpenGL: Renderbuffer, буфер глубины
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-битный буфер глубины. Кроме того, я не уверен, как получить доступ к фреймбуферу по умолчанию (или есть два фреймбуфера по умолчанию, потому что есть двойная буферизация?).