Opengl 基本狀態管理

單雙緩存

GLUT_SINGLE 0x0000 指定單緩存窗口

GLUT_DOUBLE 0x0002 指定雙緩存窗口

原理

GLUT_SINGLE單緩衝,屏幕顯示調用glFlush(),將圖像在當前顯示緩存中直接渲染,會有圖形跳動(閃爍)問題

GLUT_DOUBLE雙緩衝,屏幕顯示調用glutSwapBuffers(),將圖像先繪製在另外的緩存中,渲染完畢之後,將其整個緩存貼到當前的窗口,能消除閃爍,一般動畫要用雙緩衝.

狀態控制

glEnable(GLenum pname)    如GL_FOG

glDisable()

glIsEnabled()

glGetBooleanv(GLenum pname, GLboolean *params)

glGetFloatv()

glGetDoublev()

glGetIntegerv()

點線的寬度

glPointSize(GLfloat size)   設置被渲染點的寬度 以像素爲單位

glLineWidth(GLfloat size)  設置被渲染線的寬度 以像素爲單位

點畫線

    glLineStipple(1, 0x3050);
    glEnable(GL_LINE_STIPPLE);

多邊形細節操作

glFrontFace(GL_CCW);     //默認 CCW

glPolygonMode(GL_FRONT, GL_FILL);

glPolygonMode(GL_BACK, GL_LINE);

glCullFace(GL_FRONT_AND_BACK);

glEnable(GL_CULL_FACE);

點畫多邊形

const GLubyte mask[] = { 0, 0, 0, 1 };
glPolygonStipple(mask);
glEnable(GL_POLYGON_STIPPLE);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章