我已經從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位深度緩衝區。另外,我並不確定如何訪問默認幀緩衝區(或者是否有兩個默認幀緩衝區,因爲有雙緩衝區?)。