opengl 官网:http://www.opengl.org
void myDisplaly(void){
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("class1 Opengl program");
glutDisplayFunc(&myDisplay);
//glutIdleFunc(&myIdle);
glutMainLoop();
return 0;
}
glutInit :初始化
glutInitDisplayMode :设置显示方式(参数:GLUT_RGB :使用RGB颜色 GLUT_ :INDEX: 使用索引颜色 GLUT_SINGLE: 使用单缓冲 GLUT_DOUBLE: 使用双缓冲)
一、点
指定顶点函数:
glVertex* 指定顶点的函数必须包含在glBegin之前 glEnd之后
glPointSize 指定点的宽度
glBegin :指定使用点 连接成?图形 :GL_POINTS :点 GL_LINES: 直线 GL_POLYGON: 多边形 GL_TRIANGLES: 三角形
二、直线
指定宽度:
glLineWidth
画虚线:
glEnable(GL_LINE_STIPPLE) 启动虚线模式 glDisable 关闭
glLineStipple :设置虚线的样式
三、多边形
glPolygonMode() : 多边形两面的绘制方式: (GL_FRONT,GL_FILL): 设置正面为填充方式 (GL_BACK,GL_LINE):设置反面为边缘绘制方式 (GL_FRONT_AND_BACK,GL_POINT) : 设置两面均为顶点绘制方式
绘制时区别“正反面”:
glFrontFace(): GL_CCW : 设置CCW方向(逆时针) 为“正面” GL_CW :设置CW方向(顺时针) 为“正面”
glEnable(GL_CULL_FACE) :启动剔除功能,glDisable 关闭
glCullFace() : 正反面
glEnable(GL_POLYGON_STIPPLE): 启动镂空模式
glPolygonStipple() : 设置镂空的样式
不同顶点的着色模式:
glShadeModel() : GL_SMOOTH: 平滑方式,默认方式 GL_FLAT:单色方式
四、观察物体变换:矩阵变换
模型变换和视图变换:
glMatrixMode() : GL_MODELVIEW :设置为模型视图矩阵
glLoadIndentity(): 设置当前矩阵为 单位矩阵
投影变换:透视投影和正投影
glMatrixMode() : GL_PROJECTION :设置为投影矩阵
glLoadIndentity(): 设置当前矩阵为 单位矩阵
gluPerspective() :设置当前的可视空间为透视投影空间
glOrtho() : 设置当前的可视空间为正投影空间
视口变化:
glViewport() :定义视口,即屏幕的哪个区域
五、深度测试:
glEnable() :GL_DEPTH_TEST: 启动深度测试
gluLookAt() :设置观察点
六、光照效果:
光照模型:
光照系统:光源、材质、光照环境
法线向量:glNormal*() : 指定法线向量
控制光源:
glEnable() :启动光源 GL_LIGHT0~GL_LIGHT7 共8个光源
glLight*() :设置光源属性
GL_AMBIENT :该光的源发出光
GL_DIFFUSE :漫发射
GL_SPECULAR :镜面发射
GL_POSITION :设置光源所在的位置
控制材质:
glMaterial() :设置材质属性
选择光照模型(环境光照):
glLightModel*() :
glEnable(GL_LILGHTING); 打开光照处理功能
七、颜色混合
glEnable(GL_BLEND); 启动opengl的混合功能
glBlendFunc(); 设置源、目标因子
glDepthMask(); GL_FALSE: 设置深度缓冲为只读形式 GL_TRUE:深度缓冲设置为可读可写形式
八、图像保存
“矢量图” “像素图”
九、像素操作:
glReadPixels:
glCopyPixels
十、纹理
glEnable(GL_TEXTURE_2D); 启动二维纹理
glTexImage2D : 载入一个二维的纹理
glMatrixMode(GL_TEXTURE); 切换到纹理矩阵
glBindTexture :指定 使用哪个纹理对象
glTexImage*(): 载入纹理、指定纹理像素
glTexParameter*(); 设置纹理参数
glTexCoord*() : 纹理坐标
使用纹理对象 使用显示列表
glGenTextures 分配纹理对象
glDeleteTextures 销毁纹理对象