Vector3非浮点?

时间:2012-07-02 15:42:51

标签: c# vector struct

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

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

但是,如果您拨打期待Vector3的内容,他们 不会期待您的类型。在这种情况下,您必须使用标准Vector3

答案 2 :(得分:1)

正如已经指出的那样,你不能改变任何现有的类型(包括Vector3d)来为其成员使用不同的类型(除非它是通用的并且设计用于这样做)。您需要创建自己的(确保在执行此操作时了解classstruct之间的差异)。

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

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

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