您的位置:首页 > 其它

Game Engine Architecture Part I: Foundations 读书笔记

2016-05-18 10:48 453 查看

第一章:Introduction

游戏团队里的成员。

游戏的类型。

游戏引擎的概念。

几个知名游戏引擎。

Runtime Engine Architecture。从hardware到游戏subsystem。

游戏开发用到的tool和resource。游戏的tool有两种模式:Standalone tools architecture和Tools built on a framework shared with the game。

第二章:Tools of the Trade

介绍了几个游戏开发用到的工具

- 版本控制(SVN)

- IDE(Visual Studio)

- Profile工具

- 内存泄漏检测工具

第三章:Fundamentals of Software Engineering for Games

介绍游戏开发中的软件工程

面向对象编程:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。

C++编程:类型、大小尾端、定义和声明(注意header里的inline函数要有函数体才可以inline成功)、链接(注意cpp中的重名static变量是独立的)。

C++程序的内存Layout:堆栈、堆、内存对齐、类的vtable。

错误处理:Return Code、异常、断言。遇到错误应该处理后尽量运行下去,不应该直接跳出。

第四章:3D Math for Games

介绍图形学知识。

点与向量

点积与叉积

矩阵

变换:平移、旋转、缩放。

坐标基底转换。

法向量的变换:使用变换矩阵的逆转置:(M_(A->B)^(-1))^T。(如果只有保角变换时可以用原矩阵)

四元数及其运算

对各种表示旋转的方法的比较

– 三个角度(缺点:gimbal lock,以及旋转顺序不确定)

– 3x3矩阵 (缺点:需要空间大)

– 旋转轴+旋转角度(缺点:计算较复杂)

– 四元数(优点:插值简单可以用SLERP)

SQT(表示缩放、旋转、平移,优点:比4x4矩阵所需空间少)

双四元数(表示缩放、旋转、平移,参考资料.)

自由度

直线、射线、线段、球、平面的数学表示

边界处理:Axis-Aligned Bounding Boxes、Oriented Bounding Boxes、Frusta、Convex Polyhedral Regions

SIMD加速(做点积的技巧:使用
_mm_shuffle_ps()
把register里面的一维扩散到复制到另三维)

随机数生成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  读书笔记