如何将float(*顶点)[3]添加到C#中

本文关键字:添加 float 顶点 | 更新日期: 2023-09-27 18:24:45

我需要将C结构转换为C#结构。

在C:

 typedef struct Lib3dsMesh {
 //..
 float (*vertices)[3]; 
 //..
}

在C#中:

     [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Ansi)]
public struct Lib3dsMesh
{
   ????
}

它用于将3ds C库用于我的C#项目。

如何将float(*顶点)[3]添加到C#中

.net中没有很好的支持常量大小的内联数组(您可以使用fixed关键字,但我通常会避免)。所以我会使用一个有3个字段的结构。

[StructLayout(LayoutKind.Sequential)]
struct Vector3f
{
  public readonly float X,Y,Z;
}
[StructLayout(LayoutKind.Sequential)]
unsafe struct Lib3dsMesh {
  public Vector3f* vertices;
}