Vì vậy, tôi có một API C với các cấu trúc sauLàm thế nào để sử dụng C struct với mảng 2D trong C# Unity
typedef struct mat4f_ { float m[4][4]; } mat4f;
Nó được thông qua như một tham số để một trong những chức năng API của tôi:
void myFunction(const mat4f matrix);
tôi xuất khẩu chức năng này để C# trong Unity sử dụng một dll:
[DllImport ("mylib")]
private static extern void myFunction(mat4f matrix);
câu hỏi của tôi là, những gì tôi nên mak e C# struct tương ứng được?
Ngay bây giờ tôi có như sau:
[StructLayout(LayoutKind.Sequential)]
public struct mat4f
{
public float[,] m;
}
và sử dụng cố gắng sử dụng các chức năng như sau:
//Just make an identity matrix
mat4f matrix;
matrix.m = new float[4, 4] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } };
myFunction(matrix); //Call dll function
Đây có phải là điều đúng để làm gì? Có cách nào tốt hơn để làm điều này?