通过几天的基础的学习,在这里总结一下吧。
- #include<glut.h>
- ///绘制场景
- void RenderScene(void)
- {
- //用当前颜色清除窗口
- glClear(GL_COLOR_BUFFER_BIT);
- //刷新窗口
- glFlush();
- }
- //设置渲染状态
- void SetupRC(void)
- {
- glClearColor(0.0f,0.0f,1.0f,1.0f);//前三个参数为RGB值,这里设为蓝色背景
- //第四个为ALPHA值,用于混合
- }
- //主程序入口
- void main(void)
- {
- //设定窗口模式:使用单缓冲和RGBA颜色模式
- glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
- //创建窗口
- glutCreateWindow("Test");
- //将RenderScene函数设定回调函数
- glutDisplay(RenderScene);
- //绘制
- SetupRC();
- //启动GLUT框架运行
- glutMainLoop();
- }
OpenGL提供GLUT框架来帮助我们简化开发,可以到百度或者GOOGLE搜索下载。
基本的窗口绘制出来了,下面再往窗口上绘制一个矩形:
- //1.设定绘制颜色在RenderScene函数里
- void RenderScene(void)
- {
- ///....
- //设定颜色为红色
- glColor3f(1.0f,0.0f,0.0f);
- //用当前颜色绘制一个填充矩形(left,top,right,bottom)
- glRectf(-25.0f,25.0f,25.0f,-25.0f);
- //
- glFlush();
- }
- //2.还需要添加一个函数就是当窗口改变时矩形也要随之改变
- void ChangeSize(GLsizei w,GLsizei h)
- {
- GLfloat aspectRatio;
- //防止被0除
- if(h == 0)
- h = 1;
- //调整窗口
- glViewPort(0,0,w,h);
- //重置坐标系统
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- //建立裁剪区(l,t,r,b);
- aspectRatio = (GLfoat)w/(GLfoat)h;
- if(w <= h)
- glOrho(-100.0f,100.0f,-100.0/aspectRatio,100.0/aspectRatio,1.0f,-1.0f);
- else
- glOrho(-100.0*aspectRatio,100.0*aspectRatio,-100.0f,100.0f,1.0f,-1.0f);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- }
- //3.修改主函数
- void main(void)
- {
- //...
- //设置回调
- glReshapeFunc(ChangeSize);
- SetupRC();
- //...
- }
这样一个带有红矩形和蓝色背景的窗体就出现了,如图: