PhysX CCT设计与缺陷
本文基于PhysX5.5.0源码分析(不过PhysX在这方面从4.0开始几乎没有什么改动)。讲述了PhysX CharacterController的设计实现,以及其中存在的问题。
注:PhysX的CCT实现非常简陋(如果不是工作原因不建议看源码,有这时间不如去看看UE或者Jolt这种物理引擎的实现),而且存在很多问题。我是因为工作原因才要学习,没办法。
本文基于PhysX5.5.0源码分析(不过PhysX在这方面从4.0开始几乎没有什么改动)。讲述了PhysX CharacterController的设计实现,以及其中存在的问题。
注:PhysX的CCT实现非常简陋(如果不是工作原因不建议看源码,有这时间不如去看看UE或者Jolt这种物理引擎的实现),而且存在很多问题。我是因为工作原因才要学习,没办法。
本文述说了动态反射库Ponder中的组织结构。
本文述说了基于约束的物理求解器,这是很多游戏物理引擎的核心。
本文简述了std::shared_ptr
可以通过在父类析构函数非虚的情况下,通过父类指针正确释放子类的特点,以及一个简单实现。
本文述说了基于匹配的模板以及常见模板小工具type_list
。
本章的type_list
实现代码在mirrow的type_list.hpp中。可自行参考。
本文分析了开源项目EnTT v3.12.2的原理和实现。述说了ECS中的核心数据结构storage。
storage
是在sparse_set
上进行封装的类,主要用于将组件(component)和实体(entity)关联起来。
本文分析了开源游戏框架Raylib v4.5.0中的batch rendering实现。
模板参数有三种写法:
|
|
根据《C++ Templates 2》的说法,第一种写法会decay
(等同于调用std::decay
),即:
本文分析了开源项目EnTT v3.12.2的原理和实现。述说了ECS中的Entity部分。
EnTT中的Entity是正整数,或者更严谨一点,是enum class
:
本文分析了开源项目EnTT v3.12.2的原理和实现。述说了ECS中的核心数据结构sparse set。
sparse set是一个数据结构,用于极快速地对正整数进行增删改查并能够较好地利用CPU Cache。而EnTT中的Entity
部分正式用正整数实现的。