如何在不复制数据的情况下将子弹转换转换为glm矩阵?

时间:2017-05-15 04:34:33

标签: glm-math bullet

我有一个子弹变换,我想让它可以作为glm :: mat3类型访问。

但是,我想知道如果没有复制(如make_mat3x3),是否有办法做到这一点。

1 个答案:

答案 0 :(得分:1)

在我浏览 GLM 后,我发现 - 无需修改源代码 - 这是不可能的。
需要复制。

子弹 GLM 都会通过缓存矩阵,而不是指针或引用。

对于子弹,请参阅证据:http://bulletphysics.org/Bullet/BulletFull/btMatrix3x3_8h_source.html
对于 GLM ,请参阅示例:https://glm.g-truc.net/0.9.2/api/a00132_source.html

如果您使用memcpy可能会更快,但我不确定是否可能 这取决于值的排序方式 (我对 GLM )的了解有限

即使您设法让两个对象驻留在同一地址中, 会有一个难以管理的可怕问题。 (例如双删除)

但是,在您尝试避免复制之前,您是个人资料吗? 真的,复制并不昂贵。

几年前,我因为类似的问题浪费了几个小时 就我而言,我想将 Bullet 的矩阵复制到 Opengl 缓冲区。

尽管如此,在我对其进行分析之后,我发现了这一点 在我的所有游戏原型中,此操作的成本不到整个逻辑的1%。

真的不值得努力。
过早优化是邪恶的根源。