因为在学习的过程中需要使用Open Gl画图,所以现在学习Open Gl的基本语法
在这里强烈感谢Mr_厚厚的博客,真的非常有帮助,接下来将记录跟这位博主学习的过程。
代码解析
具体解释
以下是本人基于个人理解的一些简化的内容
glutInit(&argc, argv);
初始化glut
GLUT(OpenGL utility library,freeGLUT是GLUT的开源版本,老GLUT早已停止更新),它提供了一个简化的API来操作窗口,以及支持事件处理,IO控制和其他一些功能。glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
设置双缓冲机制(?)和颜色缓冲(?)(通常需要这两个设置)glutInitWindowSize(480, 320);
窗口大小glutInitWindowPosition(100, 100);
窗口位置glutCreateWindow("Tutorial 01");
窗口名称glutDisplayFunc(RenderScenceCB);
用一个主回调来完成一帧图像的所有渲染工作。这个回调函数会不断地被GLUT内部循环调用。glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
设置了当帧缓存清空后要使用的颜色值。glutMainLoop();
这个函数调用,传递指令给GLUT现在开始它的内部循环。在我们这个例子中,GLUT将只会调用我们注册的那个display回调(RenderScenceCB)。RenderScenceCB()
自定义的代码,用来渲染当前的图像
DEMO 显示一个窗口
void RenderScenceCB() {
// 清空颜色缓存
glClear(GL_COLOR_BUFFER_BIT);
// 交换前后缓存
glutSwapBuffers();
}
/**
* 主函数
*/
int main(int argc, char ** argv) {
// 初始化GLUT
glutInit(&argc, argv);
// 显示模式:双缓冲、RGBA
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
// 窗口设置
glutInitWindowSize(480, 320); // 窗口尺寸
glutInitWindowPosition(100, 100); // 窗口位置
glutCreateWindow("Tutorial 01"); // 窗口标题
glutDisplayFunc(RenderScenceCB); // 开始渲染
// 缓存清空后的颜色值
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// 通知开始GLUT的内部循环
glutMainLoop();
return 0;
}
运行结果