1

出于性能原因,是否可以将 C# 的内置 Vector3 结构更改为不使用浮点 Singles 而使用整数或字节?

4

3 回答 3

5

您需要Vector3根据整数或字节操作创建自己的结构。这是完全可能的,因为没有单一的“内置” Vector3(框架中有多种 3D 矢量实现)。

但是,如果您计划在框架 API 调用中使用它,则需要转换为框架版本。

于 2012-07-02T15:44:07.447 回答
3

您可以制作自己的 Vector3,或使用Tuple

但是,如果您调用期望 a 的东西Vector3,他们将不会期望您的类型。Vector3在这种情况下,您必须使用标准。

于 2012-07-02T15:45:28.313 回答
1

正如已经指出的那样,您不能更改任何现有类型(包括 Vector3d)以对其成员使用不同的类型(除非它是通用的并且旨在这样做)。您需要创建自己的(确保了解创建时间class和创建时间之间的差异struct)。

如果您需要考虑性能,您需要尝试并仔细衡量您的特定情况——目前还不清楚这种变化是否会带来显着的节省。

将 float 更改为 int 不会为您节省空间并且可能会使计算复杂化(即 1.5*1.5 在 float 中很容易,而如果您使用缩放的 int 则需要额外的操作 15*15/100,并且用于旋转的 sin/cos 可能也不太好用)。

将 float 更改为 byte 将为您节省空间,但数学将更加复杂,并且总是强制转换为 int 以进行所有操作。

于 2012-07-02T15:54:44.473 回答