, 讲API/渲染的多, 讲架构&逻辑的少
可能很多人以为, 做引擎开发就是做图形开发, 对于国内的游戏来说好像没错
但是如果真正做下来, 资源管理, 场景管理, 动画, 物理, AI, UI, 音效,...当前硬件体系结构上, 无疑是有一定误导性的
各种所谓的O(n)算法, 都是"brach heavy"的, 会引起非常多的"cache miss"
举个例子, 在某些情况下, 二分查找还不如线性遍历来得快
再加上各种面向对象理论的洗脑...很多时候SOA(struct of array)比AOS(array of struct)是快的, 因为多数情况下我们遍历一个结构体数组, 只是访问其中的一个字段而已
SOA与AOS的区别, 就是面向对象与面向数据程序设计的区别之一...class vs struct
这才是面向对象与面向数据在语言层面的差异
最早认识到class性能会出问题的, 是从N3的代码里. floh有说为什么自己的引擎平台抽象层没有使用抽象类, 是因为虚函数对于主机平面的硬件架构性能很差...现在又出来个TileBasedRendering, 都是因为硬件的变化带来算法/架构上的变化
总得来说, 硬件在不断升级换代, 我们头脑也需要升级换代才能跟得上潮流
面向对象虽然加快了开发效率,但是并不是对机器友好的