作者vatog (Kendo)
看板C_Sharp
标题[问题] 请教如何用CsGL画凹多边形
时间Sun Jun 29 00:13:15 2003
CsGL :C# Graphics library, 就是用C# +OpenGL
http://csgl.sourceforge.net/index.html
glBegin(GL_POLYGON);
..
..
..
glEnd();
上面这个方法只能画凸多边形,画凹多边形会有错误
而我找到一个方法,好像可以用来画凹多边形,以下是C++的写法
GLUtesselator *tess
tess = gluNewTess()
GLdouble vertices[100][3];
gluBeginPolygon(tess);
gluTessBeginContour(tess);
gluTessVertex(tess,vertices[0], NULL);
gluTessVertex(tess,vertices[1], NULL);
..
.
gluTessEndContour(tess);
gluEndPolygon(tess);
但我用的是CsGL,也就是用C#写OpenGL
http://csgl.sourceforge.net/index.html
请问要怎麽写呢? 我这样写却画不出东西,程式码示意如下:
GLUtesselator tess = new GLUtesselator();
tess = gluNewTess();
double [][] gltemp; //jagged array
gltemp = new double [100][];
gltemp[对於每个i]=new double [3] {x,y,z} //x,y,z是座标
gluTessBeginPolygon(tess,new System.IntPtr(null));
gluTessBeginContour(tess);
gluTessVertex(tess,gltemp[i],new System.IntPtr(null));
gluTessVertex(tess,gltemp[下个i],new System.IntPtr(null));
...
..
.
gluTessEndContour(tess);
gluTessEndPolygon(tess);
gluTessBeginPolygon,gluTessVertex这两个函式到底怎麽用呢?
他们的原形如下:
gluTessBeginPolygon(CsGL.OpenGL.GLUtesselator tess,System.IntPtr data)
gluTessVertex(CsGL.OpenGL.GLUtesselator tess,double [] location,
System.IntPtr data)
试了好久都试不出来, 请高手指教
--
※ 发信站: 批踢踢实业坊(ptt.csie.ntu.edu.tw)
◆ From: 140.113.139.239