出于性能原因,是否可以将 C# 的内置 Vector3 结构更改为不使用浮点 Singles 而使用整数或字节?
问问题
111 次
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 回答