【发布时间】:2021-02-27 06:20:39
【问题描述】:
我正在为一个简单的游戏编写一个简单的引擎,到目前为止,我很喜欢我的小爱好项目,但游戏不断发展,现在一个场景中一次大约有 800 个游戏对象。
每个对象,就像在 Unity 中一样,都有一个转换组件,该组件在组件初始化时计算转换矩阵。我开始注意到,对于 800 个对象,只需 5.4 毫秒即可更新每个矩阵(例如,如果每个对象都已移动),而无需任何其他组件或其他任何东西。
我使用 GLKit 数学库,由于某种原因,它比使用原生 simd 类型更快。使用 simd 类型将计算时间增加三倍
这是一段运行它的代码
let Translation : GLKMatrix4 = GLKMatrix4MakeTranslation(position.x, position.y, position.z)
let Scale : GLKMatrix4 = GLKMatrix4MakeScale(scale.x, scale.y, scale.z)
let Rotation : GLKMatrix4 = GLKMatrix4MakeRotationFromEulerVector(rotation)
//Produce model matrix
let SRT = GLKMatrix4Multiply(Translation, GLKMatrix4Multiply(Rotation, Scale))
问题:我正在寻找一种优化方法,以便可以使用更多游戏对象。并在我的对象上使用更多组件
【问题讨论】:
标签: ios swift macos opengl-es metal