最近在用C# +OpenGL做三维,以前用MFC实现过功能,目前是用C#重写该功能。
因为C#刚用,不是很熟,所以问题不断,大家帮帮忙。
1、glMap2d( uint target, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double* points ),这个函数是opengl里的一个函数,最后一个参数“double* points”,我怎么传入啊,是指针?  这个points(点集)是数组(二维或者三维)。 以前在MFC中,比如定义一个数组
array[10][20][3],该参数我写&array[10][20][3]就行。现在用C#,我该怎么写呢?

解决方案 »

  1.   

    参数:points——指定一个控制点的数组的指针。那个就是三维数组,//例如
    static double tex[2][2][2] =
    {
     { {0.0, 0.0}, {1.0, 0.0} },
     { {0.0, 1.0}, {1.0, 1.0} }
    };
      

  2.   

    这种平台调用,其实无所谓几维数组,只要你传递的数组长度符合调用规则即可例如你说的:array[10][20][3]这样定义都可以,关键在于调用后返回值的处理上,调用和定义时一定加上ref
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10*20*3)]
    double[] points ;
      

  3.   

    isjoe,你的意思是,我在程序开始先定义ref
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10*20*3)]
    double[] points ;  上面语句就是说定义了一个三维数组?我这glMap2d函数中最后一个参数如何调用呢,请详细明示,谢谢.
    比如:
    glMap2d(GL_Vertex_3,0.0, 1.0, 3, 3, 0.0, 1.0,12, 4, ???????? ),