Итак, у меня есть API C со следующей структурой
typedef struct mat4f_ { float m[4][4]; } mat4f;
Он передается как параметр одной из моих функций API:
void myFunction(const mat4f matrix);
Я экспортирую эту функцию в С# в Unity с помощью dll:
[DllImport ("mylib")]
private static extern void myFunction(mat4f matrix);
Мой вопрос: , что я должен сделать для соответствующей структуры С#?
Сейчас у меня есть следующее:
[StructLayout(LayoutKind.Sequential)]
public struct mat4f
{
public float[,] m;
}
и попробуйте использовать функцию следующим образом:
//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
Это правильная вещь? Есть лучший способ сделать это?