gpt4 book ai didi

c++ - 为什么 Doom3 会切换列主矩阵和行主矩阵?

转载 作者:IT老高 更新时间:2023-10-28 23:18:29 26 4
gpt4 key购买 nike

我一直在勇敢地尝试探索毁灭战士 3 的源代码。我偶然发现的一件事是在整个解决方案的其余部分中使用的矩阵类。这是相当简单的代码,但有一个我无法理解的决定。他们决定混合不同规模的 Column 和 Major 行专业。

  • 3x3 矩阵是主要列
  • 其他所有矩阵都是行主要的(我认为 - 还没有全部检查)

有谁知道为什么会做出这个决定?由于 OpenGL 是列专业的,我认为只使用列专业是有意义的吗?

最佳答案

就像 Oli Charlesworth 已经评论过的那样,这可能是一个改进缓存行为的决定。 OpenGL 的矩阵主要是列,因为在客户端,您对列比对行更感兴趣(列构成坐标系的基础)。但是,如果矩阵用于物理或碰撞检测等计算,则许多操作将是行主要的。因此,这在很大程度上取决于主要在相关矩阵上执行的操作类型。 Doom3 引擎大量使用 Plücker coordinates ,因此选择正确的内存布局对整体性能有很大的影响,并且矩阵多数之间的简单切换可能会添加/删除涉及的大量操作。

关于c++ - 为什么 Doom3 会切换列主矩阵和行主矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8592832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com