Performance 围绕SharpDX Vector结构包装Vector类-性能?

Performance 围绕SharpDX Vector结构包装Vector类-性能?,performance,vector,struct,sharpdx,Performance,Vector,Struct,Sharpdx,我在使用Vector3类时遇到了一些问题,主要是因为它是一个结构,另外,当组件发生更改时,它不会引发类似事件的事件 最后,我希望能够编写\u camera.Position.Z+=0.1f 对于SharpDX.Vector3,这是不可能的,因为它是一个结构,我无法修改它的组件(因为调用\u camera.Position时会返回一个副本) 此外,没有类似于ComponentsChanged的事件,例如,我会更新相机视图矩阵 我决定围绕Vector3结构创建一个包装器类,它也提供这样一个事件。由于

我在使用Vector3类时遇到了一些问题,主要是因为它是一个结构,另外,当组件发生更改时,它不会引发类似事件的事件

最后,我希望能够编写
\u camera.Position.Z+=0.1f

对于
SharpDX.Vector3
,这是不可能的,因为它是一个结构,我无法修改它的组件(因为调用
\u camera.Position
时会返回一个副本)

此外,没有类似于
ComponentsChanged
的事件,例如,我会更新相机视图矩阵

我决定围绕Vector3结构创建一个包装器,它也提供这样一个事件。由于调用
\u camera.Position
会返回一个引用,因此我还可以直接修改
Z
组件

但是,出于性能原因,我怀疑这是否是一个好主意

  • 将向量3移动到类中真的很好吗
  • 每次Vector3组件发生更改时引发事件是否不好(即使没有/一个/更少的订阅者)

使用存储向量的结构是正确的格式,因为它在空间和映射上直接比原始C++的预期/返回的原生格式更有效。p> 因此,在结构上的每个组件更改上引发事件是不好且不常见的。结构是轻量级数据,节省空间,对于D3D,用于本机互操作。事件通常在持有值类型的类(例如camera component)上引发。这是一个在.NET中普遍有效的建议,在整个.NET框架中广泛使用