《OpenGL Shaders——场景编辑器(一、二)》

  OpenGL 商业游戏开发全面详解系列  
《 OpenGL Shaders—场景编辑器(一、二)》是可奇教育最新推出的一套适合广大学生朋友和初中级水平职场人士快速学习的视频教程。该教程继承可奇一贯轻松学习的理念,帮助您更加轻松和快速地掌握业内必备核心技术,在最短的时间内理解核心概念、原理、框架,并通过真实的动手实践,将最核心的知识点牢固掌握。

《OpenGL Shaders—场景编辑器(一、二)》使用真实的商业游戏"魔兽争霸"中的模型动画作为教程中的例子,教学的每个环节都有可以执行代码、资源等文件提供,所有的代码在教程中都配有深入详细的讲解。使用《OpenGL Shaders—场景编辑器(一、二)》,您可以亲自动手修改或重写每个环节的源代码,能够帮助您以最快速度从原理学习转入实践操作阶段,最终制作出真实的3D模型动画。

《OpenGL Shaders——场景编辑器(一、二)》

1、把OpenGL功能移动到新窗口

      创建子窗口

      把OpenGL的功能移动到子窗口

2、主界面与对象显示栏

      设置主界面的视口与裁剪范围

      设置对象显示栏的视口与裁剪范围

3、分栏显示

      设置分栏的位置与大小

      通过着色器在每个分栏中进行绘画

4、添加滚动条

5、接收界面的输入并绘画地形

      创建地形的顶点缓冲区

      设置地形的顶点信息

      把地形顶点信息写入顶点缓冲区

      将顶点缓冲区与着色器关联

      绘画地形

      根据界面输入重置地形信息

6、通过高度图绘制地形高度

      根据高度图设置地形高度信息

      绘画带有高度信息的地形

7、通过程序产生高度信息

8、地形纹理

      读取地形纹理

      设置地形纹理坐标

      把地形纹理坐标写入缓冲区

      将地形纹理坐标与着色器关联

      绘画带有纹理的地形

9、摄像机的移动

      根据键盘的控制改变摄像机的位置与朝向

      将摄像机改变后的信息传递给着色器

10、几何着色器中视见体的剔除

      几何着色器输入与输出的类型设置

      从顶点着色器传递数据到几何着色器

      从几何着色器传递数据到片元着色器

      计算视见体的各个平面

      从几何着色器中获取各个顶点进行剔除判断

      从几何着色器中输出在视见体内的图元

11、快速绘画大地形

      判断地形网格是否在可视范围中

      把可视范围中的地形信息写入缓冲区

      绘画可视范围中的地形

12、快速绘画带有高度信息的大地形

13、转换屏幕鼠标位置

      屏幕鼠标的转换流程

      屏幕到投影空间的转换

      投影空间到观察空间的转换

      计算观察矩阵的逆反矩阵

      计算拾取射线的起点与方向

      调整窗口的大小并重建窗口

      处理鼠标单标事件

14、拾取

      射线的参数方程

      三角形的参数方程

      三角形参数方程的限定条件

      射线与三角形相交的方程

      求解射线与三角形相交的方程

      通过几何着色器判断射线与三角形是否相交

      通过片元着色器绘画拾取后的三角形

15、 通过鼠标调整地形顶点高低

      判断鼠标选中了哪一个地形网格

      计算拾取的相交点

      判断拾取点影响的方向

      判断受影响的邻接顶点

      设置受影响的当前与邻接的顶点

      将顶点信息写入缓冲区

      重绘调整高度后的地形

16、读取与绘画模型

      读取模型与纹理

      把模型的信息写入缓冲区

      把模型缓冲区中的信息与着色器关联

      对模型的纹理图进行镂空

      绘画模型

17、模型的AABB盒

      计算模型AABB盒的数值

      设置AABB盒的各个平面

      把AABB盒的信息写入缓冲区

      把AABB缓冲区与着色器关联

      绘画半透明的AABB盒

18、选中并移动模型

      通过鼠标选中模型

      计算鼠标移动后的拾取点

      重置模型的位置

19、读取多个模型并在对象显示栏中显示

      读取多个模型与纹理

      在对象显示栏中显示模型

      分类显示模型

20、插入并绘画对像模型

      描述对象

      初始化对象

      插入对象并设置相关信息

      绘画对象所使用的模型

21、选中与移动并删除对象

      通过鼠标选中对象

      显示被先中对象的AABB盒

      移动被选中的对象

      删除被选中的对象

22、旋转与缩放对象

      设置对象的旋转与缩放矩阵

      的选择决定进行旋转还是缩放操作

      通过界面输入旋转和缩放值

      通过键盘来操作对像模型的旋转与缩放

23、对象的排序

24、快速剔除场景对象并绘画

25、保存与读取场景信息

26、初始化第一层地形纹理并绘制

      设置第一层地形子纹理的坐标

      地形子纹理的坐标写入缓冲区

      读取并使用地形子纹理

27、第一层地形纹理的添加组合变化

      处理当前地形子网络的纹理组合变化

      处理受影响邻接子网络的纹理组合变化

      在片元着色器中处理地形子纹理

28、多重地形纹理的添加与组合变化

      处理第二与第三层地形子纹理的组合变化

      第二与第三层地形子纹理写入缓冲区

      激活并绑定各层的地形纹理

      各层地形纹理坐标与着色器进行关联

      着色器接收并传递多层地形纹理坐标

      片元着色器接收多层地形纹理

      片元着色器判断各层地形纹理是否存在

      片元着色器对多层地形纹理进行混合处理

29、地形纹理的删减组合变化

      处理当前地形子网络的纹理删减组合变化

      处理受影响的邻接地形子网络的纹理删减组合变化

30、地形障碍的设置

      设置地形障碍标志

      地形障碍标志写入缓冲区

      地形障碍标志与着色器关联

      着色器接收并传递地形障碍标志

      通过着色器设置地形障碍的颜色

      通过着色器处理地形障碍与地形纹理的混合操作

31、保存与读取地形纹理与障碍标志

      保存地形纹理与障碍标志

      读取地形纹理与障碍标志

32、悬崖的基础组合

      处理当前地形子网络的悬崖组合变化

      处理受影响邻接子网络的悬崖组合变化

      将悬崖对象的信息插入地形子网格

      通过地形子网格查找悬崖对象的信息

      绘画可视范围中的悬崖模型

33、悬崖的扩展组合

      处理当前地形子网络的悬崖扩展组合变化

      处理受影响邻接子网络的悬崖扩展组合变化

34、悬崖的删减

      当前地形子网络的悬崖删减组合变化

      受影响邻接子网络的悬崖删减组合变化

      删除减少后的悬崖对象

      更新地形子网格中删除后的悬崖对象信息

35、保存与读取悬崖的信息

      保存悬崖信息

      保存地形中悬崖对象信息

      保存地形顶点变化后的信息

      读取悬崖的信息

      读取地形中悬崖对象信息

      读取地形顶点变化后的信息