作者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