最好保留vec4而不是vec3以避免总是投射?

时间:2016-11-29 22:19:02

标签: c++ opengl math vector glm-math

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

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

我们的想法是保持vec3s中的位置,场景中的许多对象可以节省大量存储空间,甚至更重要的是减少发送到图形卡的缓冲区的大小。但它导致真正难以阅读代码回放和第四,加上我想象的所有演员都会花费一些东西。那么保持vec4s以避免演员会更好吗?

1 个答案:

答案 0 :(得分:0)

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

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

如果出现问题,请纠正我。