OpenGL初学者教程:第一个窗口程序
需积分: 3 159 浏览量
更新于2024-09-12
收藏 727B TXT 举报
"该资源是OpenGL编程指南中的第一个示例程序,用于展示基本的OpenGL窗口创建和绘图操作。"
OpenGL是一种广泛使用的图形库,它允许程序员在各种平台上创建复杂的2D和3D图形。这个程序是初学者入门OpenGL的一个典型例子,它包含了几个关键的函数调用来设置画布、定义颜色、绘制形状以及启动主循环。
首先,程序引入了必要的头文件,包括`windows.h`(用于Windows平台的GLUT实现),`GL/gl.h`、`GL/glu.h`和`GL/glut.h`(OpenGL的核心库和辅助库)。
在`myInit()`函数中,执行了几项初始化任务:
1. `glClearColor(1.0,1.0,1.0,0.0);` 设置背景颜色为白色(RGB值分别为1.0,1.0,1.0)。
2. `glColor3f(0.0f,0.0f,0.0f);` 设置当前绘制颜色为黑色(RGB值分别为0.0,0.0,0.0)。
3. `glPointSize(4.0);` 设置点的大小为4.0像素。
4. `glMatrixMode(GL_PROJECTION);` 选择投影矩阵进行操作。
5. `glLoadIdentity();` 重置当前的投影矩阵到单位矩阵,相当于清除之前的设置。
6. `gluOrtho2D(0.0,640.0,0.0,480.0);` 创建一个正交投影,定义了屏幕坐标系,从(0,0)到(640,480),其中左下角为(0,0),右上角为(640,480)。
`myDisplay()`函数是OpenGL的主要绘图函数,其中:
1. `glClear(GL_COLOR_BUFFER_BIT);` 清除颜色缓冲区,也就是清除背景色。
2. `glBegin(GL_POINTS);` 和 `glEnd();` 之间定义了一个点的序列,表示将要绘制的点集合。
3. `glVertex2i(100,50);`、`glVertex2i(100,130);` 和 `glVertex2i(150,130);` 分别定义了三个点的坐标,这里只绘制了三个点,没有连接成线或面。
4. `glFlush();` 强制OpenGL执行所有的绘图命令,确保画面立即更新。
`main()`函数是程序的入口点,它调用`glutInit()`系列函数来设置GLUT参数:
1. `glutInit(&argc,argv);` 初始化GLUT并处理命令行参数。
2. `glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);` 设置显示模式,单缓冲和RGB颜色模式。
3. `glutInitWindowSize(640,480);` 设置窗口大小为640x480像素。
4. `glutInitWindowPosition(100,150);` 设置窗口的初始位置。
5. `glutCreateWindow("myfirstattempt");` 创建一个新的窗口,并指定标题。
6. `glutDisplayFunc(myDisplay);` 注册`myDisplay()`函数作为显示回调,当窗口需要刷新时调用。
7. `myInit();` 调用初始化函数。
8. `glutMainLoop();` 进入GLUT的主事件循环,处理用户输入和窗口系统事件。
这个简单的程序展示了如何使用OpenGL和GLUT库在窗口中绘制图形。通过这个起点,学习者可以逐步深入到更复杂的OpenGL图形编程,如线条、多边形、纹理、光照、变换等。
2011-01-28 上传
点击了解资源详情
1472 浏览量
35959 浏览量
782 浏览量
1043 浏览量
1113 浏览量
294 浏览量
demiann
- 粉丝: 0
- 资源: 2
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器