从零开始物理引擎(六)- 重构完成与MVP理解
完成重构,搭建起物理引擎基础框架,包含碰撞检测与移动方式以及物理量基类。
本篇借助重构进一步探索MVP矩阵理解(model->view->projection)
重构
Common
该项目以dll形式注入启动项目,主要包含通用操作如全局上下文,配置类,日志以及引擎所需接口如窗口接口,控制台接口,渲染类接口等
Console
控制台实现项目,以dll形式注入,通过实现Common中createConsole供主启动类创建出控制台。借助imgui实现
MainWindowUi
窗口实现项目,以dll形式注入,通过实现Common中createWindow供主启动类创建出主窗口。借助win32api实现
Renderer
渲染器,由dx11负责渲染,主要封装了dx11渲染操作。通过实现Common中createDx11供主启动类创建出渲染器实例。
这里不过多介绍代码实现,主要针对渲染器重构部分详解MVP矩阵概念。
渲染器重构
原有渲染是将每个形状作为渲染的主体,例如圆形、三角形等分别做成不同的类,类中包含位置数据与移动所需movement对象。
现有渲染将位置数据搭配movement对象作为渲染主体,其中movement对象包含速度、加速度与质量,通过其他物理量计算出’物体’受力,进而计算出加速度,借助半隐式欧拉积分根据加速度计算出速度从而改变物体位置。
再次回顾物体如何被渲染到屏幕上,渲染管线部分此处不赘述,从实现角度来讲,我们需要配置顶点数据将形状绘制出来。那么顶点与MVP矩阵的含义与关系分别是什么。
可以这么理解,以我们现实世界来看,顶点代表一个物体的形状,这个形状存在于概念层面,即我们想象中的形状。举个例子,我们想象一个人,那么它的形状会在脑海中浮现,这个就是顶点,它定义出了物体在抽象意义上的形状。但要将抽象意义中的物体放在现实世界中,我们需要它的位置、大小、姿态(旋转)。
