opengl大作业
本项目为海面太阳高升的场景。天空上有飞机,海面上有小船,接近海平线有一座金碧辉煌的宝塔,并且位于远处的物体被雾所遮挡。
2、交互介绍
1.鼠标移动
鼠标移动可以直接控制视角。
2.鼠标滚轮滑动
鼠标滚轮滑动可以直接对场景进行放大或缩小。
3.按键操作
按键w(↑)、a(←)、s(↓)、d(→)分别控制视点向上、左、下、右移动。
3、引用的第三方库
glad库:用于访问opengl的规范化接口的第三方库。
GLFW库:用于图形、窗口、渲染等的第三方库。
glm库:用于进行向量和矩阵的数学计算。
assimp库:读取和加载obj模型
stb_image.h:用于读取图片
OpenGL大作业是一个涉及图形学课程的项目,主要目标是创建一个海面日出的场景,包含天空中的飞机、海上的小船以及远方被雾遮挡的金色宝塔。这个项目利用了多种第三方库来实现其功能,如:
1. **Glad库**:Glad是一个动态链接库,用于在OpenGL应用程序中方便地访问规范化的API接口。它能够自动加载并处理所需的OpenGL函数指针,使得开发者可以专注于编写图形代码,而不是手动管理OpenGL函数的加载。
2. **GLFW库**:GLFW是一个跨平台的库,主要用于创建和管理窗口,处理输入设备(如鼠标和键盘),以及渲染图形。在这个项目中,它被用来创建主窗口,并处理用户交互,例如鼠标移动和滚动以及键盘按键事件。
3. **glm库**:OpenGL Mathematics(glm)库提供了类似OpenGL Shading Language (GLSL)的向量和矩阵运算,方便在C++中进行数学计算,如坐标变换和光照计算。
4. **Assimp库**:这是一个强大的3D模型导入库,能够读取和加载多种3D模型格式,如OBJ。在这个项目中,可能被用来加载宝塔和其他3D对象。
5. **stb_image.h**:这是一个单头文件库,用于读取和解码多种图像格式,如JPEG和PNG,用于加载天空盒或其他纹理贴图。
在交互方面,用户可以通过以下方式与场景互动:
- 鼠标移动:改变视角,模拟摄像机的旋转。
- 鼠标滚轮滑动:缩放视图,拉近或推远观察距离。
- 键盘按键:w、a、s、d键控制视点在三维空间中的移动,提供更自由的视角探索。
这个项目展示了基本的计算机图形学原理,如投影和视图变换、光照计算、雾化效果,以及如何利用OpenGL进行3D渲染。通过使用这些库,学生能够更专注于设计和实现图形场景,而无需关注底层的细节。此外,它还涉及到空间坐标变换、纹理映射、深度测试等概念,这些都是图形学基础课程的重要组成部分。在K12教育阶段,这样的项目有助于学生理解理论知识的实际应用,并提升他们的编程和问题解决能力。