2010-12-16 16 views
0

OpenGLで輪郭の非凸多角形を描画しようとしていますが、私はうまくいかず、問題になります。
私がやっていることは、基本的に、ポリゴンをテッセレーションして、そこから表示リストを作成することです。それから、私はそれを2度描きます。だから、これはこれまでのところ、私が持っているコードです:明らかOpenGLの非凸多角形の概要

GLUtriangulatorObj *tess = gluNewTess(); 

gluTessCallback(tess, GLU_TESS_BEGIN, (void (__stdcall*)(void))tessBeginCB); 
gluTessCallback(tess, GLU_TESS_END, (void (__stdcall*)(void))tessEndCB); 
gluTessCallback(tess, GLU_TESS_ERROR, (void (__stdcall*)(void))tessErrorCB); 
gluTessCallback(tess, GLU_TESS_VERTEX, (void (__stdcall*)())tessVertexCB); 

GLuint poly = glGenLists(1); 
glNewList(poly, GL_COMPILE); 

gluTessBeginPolygon(tess, NULL); 
gluTessBeginContour(tess); 

// calls to gluTessVertex(tess, v, v); to add vertices 

gluTessEndContour(tess); 
gluTessEndPolygon(tess); 
gluDeleteTess(tess); 

glEndList(); 


// DRAW 
glPolygonOffset(1.0, 1.0); 
glEnable(GL_POLYGON_OFFSET_FILL); 
glCallList(poly); 
glDisable(GL_POLYGON_OFFSET_FILL); 

glColor3ub(255, 0, 0); 
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 
glCallList(poly); 
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 

、私が概説ポリゴンとすべての内側のラインを取得します。
そのような内側の線を削除するにはどうすればよいですか?

ありがとうございました

答えて

0

ここで塗りつぶした三角形を描画しますが、ポリゴンを分割することなく輪郭を描きます。

+0

かなり明白です。しかし、うまくいくようです。ありがとう。私はそれを行うためのより高度な方法があると思っていましたが、時にはより簡単な解決法が良いでしょう。 – MikMik

0

黒でポリゴンを描画します。次に、ポリゴンをもう一度描きます。通常は、小さなzオフセットで、やや小さくします。あなたは黒い輪郭を持つでしょう。

編集:実際には、gluTessVertex呼び出しのセットとしてポリゴンのアウトラインを指定しています。その頂点をGL_LINE_STRIPとしてレンダリングします。

関連する問題