【OpenGL】计算机图形学-练习题1
- 一、题目一
- 二、题目二
- 三、题目三
- 四、题目四
- 五、题目五
- 六、题目六
一、题目一
1.1 作业题目
考虑三个不同的光栅系统,分辨率依次为 800x600、1280x960、1680x1050。
如果每个像素存储 16 位,那么这些系统各需要多大的帧缓存(字节数)?
如果每个像素存储 32 位,这些系统各需要多大的存储量?
1.2 作业解答
Q:如果每个像素存储 16 位,那么这些系统各需要多大的帧缓存(字节数)?
A:
光栅系统分辨率 | 像素存储(位) | 计算公式 | 帧缓存(B) | 帧缓存(KB) |
800x600 | 16 | 800 * 600 * 16 / 8 | 960000 | 960 |
1280x960 | 16 | 1280 * 960 * 16 / 8 | 2457600 | 2457.6 |
1680x1050 | 16 | 1680 * 1050 * 16 / 8 | 3528000 | 3528 |
Q:如果每个像素存储 32 位,这些系统各需要多大的存储量?
A:
光栅系统分辨率 | 像素存储(位) | 计算公式 | 帧缓存(MB) |
800x600 | 32 | 800 * 600* 32 / 8 / 1000 / 1000 | 1.92 |
1280x960 | 32 | 1280 * 960 * 32 / 8 / 1000 / 1000 | 4.9152 |
1680x1050 | 32 | 1680 * 1050 * 32 / 8 / 1000 / 1000 | 7.056 |
二、题目二
2.1 作业题目
考虑分辨率为 800x600 和 1680x1050 的两个光栅系统。若显示控制器刷新屏幕的速率为每秒 60 帧,那么在各个系统中,每秒应访问多少像素?各个系统访问每个像素的时间是多少?
2.2 作业解答
Q:在各个系统中,每秒应访问多少像素?
A:
光栅系统分辨率 | 刷新速率(s^-1) | 计算公式 | 访问像素(个) |
800x600 | 60 | 800 * 600 * 60 | 28800000 |
1680x1050 | 60 | 1680 * 1050 * 60 | 105840000 |
Q:各个系统访问每个像素的时间是多少?
A:
访问像素(个) | 计算公式 | 时间(s) |
28800000 | 1 / 28800000 | 3.47 * 10^-8 |
105840000 | 1 / 105840000 | 9.45 * 10^-9 |
三、题目三
3.1 作业题目
显示窗口的宽度为 150,高度为 250,请列出从窗口右上角到左下角绘制一根线段的 OpenGL 语句。
3.2 作业解答
四、题目四
4.1 作业题目
请说明 OpenGL 基本库、OpenGL 实用库(GLU)及 OpenGL 实用函数工具包(GLUT)之间的差别。
4.2 作业解答
库名 | 区别 | 内容 |
OpenGL 基本库 | 核心 | 包含与硬件无关的函数,例如用于描述图元、属性、几何变换、观察变换和许多其他操作的函数。函数以gl为前缀 |
OpenGL 实用库(GLU) | 对OpenGL 基本库的部分封装 | 包含一些其他更专业的操作的函数,例如二次曲面生成、B样条曲面生成、表面纹理映射、二维查看和一些三维查看操作。函数以glu为前缀 |
OpenGL 实用函数工具包(GLUT) | OpenGL的跨平台工具库 | 主要提供与硬件相关的功能,如用于显示窗口管理和与输入设备交互的功能,也包含用于生成各种平面、二次曲面和三次曲面实体(如立方体、球体、圆锥体或茶壶)的功能。函数以glut为前缀 |
五、题目五
5.1作业题目
请说明术语“OpenGL 显示回调函数”的含义。
5.2作业解答
显示回调函数是程序员自己编写的关于显示窗口内容的函数,由glutDisplayFunc作为显示窗口需要重新显示时引入的函数来注册。当一个窗口的图像层需要重新绘制时,GLUT将调用该窗口的显示回调函数。
六、题目六
6.1作业题目
请说明物体坐标系和世界坐标系的差别。
6.2作业解答
要分清模型坐标系与世界坐标系,物体的旋转平移变换是以模型坐标系为基础来进行的。
模型开始加载视图中,此时模型坐标系是与世界坐标系重合的。
在模型通过平移变换后,其模型坐标系也进行相应的变换,此时模型坐标系就会与世界坐标系进行分离。
而随后的拼接物体的旋转平移变换都是以平移或者旋转后的模型坐标系为基础变换的。
建模坐标系:在构建单独对象时参照的坐标系
世界坐标系:系统的绝对坐标系