gpt4 book ai didi

c++ - 最好保留 vec4 而不是 vec3 以避免总是转换?

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:51 25 4
gpt4 key购买 nike

我正在使用 OpenGL,在我的代码中有一些不可读且烦人的行,例如:

newChild->dposition = dvec_4(dvec_4(newChild->boundingVerts[2].position, 1) + newChild->parent->dposition);

想法是在 vec3s 中保留位置,场景中有很多对象可以节省存储空间,更重要的是减少发送到显卡的缓冲区大小。但这导致很难阅读代码来回转换,再加上我想象的所有转换都需要一些成本。那么保留 vec4s 以避免强制转换会更好吗?

最佳答案

在无法访问所有代码的情况下,很难说。但是,我宁愿说使用 vec4s 可能会带来性能/代码质量方面的好处:

  • 猜测数据可能在 GPU 上使用,加载/存储 vec4 可能比 vec3 更有效。我不太确定,但我认为没有一条指令可以加载 vec3。我认为它将被分解为加载一个 vec2 和一个 float。
  • 稍后,您可以轻松地将一些额外的数据存储到那个额外的 float 中。
  • 减少转换并使代码更具可读性。
  • 根据您的结构的内存布局/成员类型,无论如何撤消您的“内存优化”,结构都可能对齐到 16 字节。

如有不妥之处,请指正。

关于c++ - 最好保留 vec4 而不是 vec3 以避免总是转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876810/

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