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);

 

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