Opengl从0到1
目录
1 窗口建立
GLUT显示窗口管理
-
完成GLUT初始化:glutInit(&argc,argv);
- 注意:int main(int argc,char** argv){}
-
显示窗口创建时设定的标题:glutCreateWindow(“An Example openGL Program”);
-
用回调函数将图定义传递给GLUT函数: glutDisplayFunc(lineSegment);
-
lineSegment():
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//显示回调函数 void lineSegment(){ //和glclearColor配合,以GL_COLOR_BUFFER_BIT 常量,指定颜色缓存的位值 glClear(GL_COLOR_BUFFER_BIT); //设定显示的对象的颜色 glColor3f(0.0,0,0); glBegin(GL_LINE_LOOP); glVertex2d(80,15); glVertex2d(100,80); glVertex2d(150,30); glEnd(); //强制清空所有缓存处理opengl函数 glFlush(); errorCheck(); }
-
glClear(GL_COLOR_BUFFER_BIT);
- 清理窗口显示
- GL_COLOR_BUFFER_BIT 常量,指定颜色缓存的位值
- 缓存由glClearColor指定
-
glColor3f(R,G,B);
- 设置图元颜色
-
glBegin(GL_LINE_LOOP)—————glEnd()
- 包含以Begin指定图元类型的点以输出.
-
glFlush();
- 强制清空所有缓存来处理OpenGL函数.
-
-
-
**!!!!!!**关闭窗口指令:
- glutDestroyWindow(windows);
-
初始化window窗口的位置
- glutInitWindowPosition(300,200);
-
初始化window窗口的大小
- glutInitWindowSize(1024,768);
-
初始化显示窗口的缓存和颜色模型等选项:
- glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
- GLUT_SINGLE : 单个缓存显示
- GLUT_RGB : 由RGB三原色组成的颜色
- 以上两个参数都是默认的
-
窗口处理,让显示窗口和图形内容激活:
-
glutMainLoop();
-
必须是最后一个函数
-
Init一次性初始化函数
- 用RGB值设定窗口背景颜色:glClearColor(0.5,0.5,0.5,1);
- 以三维观察模式操作处理模型,以正投影将二维区域内容投影:glMatrixMode(GL_PROJECTION);
- ortho正交化 将窗口的(0,0)到(200,150)的矩形区域投影到显示窗口上:gluOrtho2D(0.0,200.0,0.0,150.0);
+++
程序示例
|
|
opengl 出错处理
-
一次值记录一个出错编码
-
1 2 3 4 5 6 7 8 9
GLenum errorCheck() { const GLubyte *s; //unsigned char 的指针,指向获取的错误字符串 GLenum code; //错误代码的枚举enum code=glGetError(); //得到错误代码 s=gluErrorString(code);//得到错误信息字符串 printf("%s\n",s); return code; }
+++
坐标系统
二维世界坐标系统
画点函数
- glVertex**();
- 表示一个点的位置坐标值
- *表示后缀码
- 维度:2,3,4…….
- i : 整数
- s:短整数
- f:浮点数
- d:双精度浮点数
- !!! v:向量(附加)
- glVertex维度+数据结构+点/维度(无/v)
画线函数
-
1 2 3
glBegin(图元); .....点集:glVertex2**() glEnd();
-
图元:
- GL_LINES:未连接直线
- GL_LINE_STRIP:折线
- GL_LINE_LOOP:封闭折线
+++