我想在OpenGL中繪製一個輪廓的非凸多邊形,但我不成功,因此問題。
基本上,我正在做的是鑲嵌多邊形並從中創建顯示列表。然後我畫兩遍,一次填充,然後只是線條。所以這是我的代碼,到目前爲止: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);
很顯然,我得到的概述多邊形加上所有的內部線路。
那我該如何刪除那些內線呢?
謝謝
非常明顯。但似乎工作正常。謝謝。我認爲會有一些更「先進」的做法,但有時候更簡單的解決方案會更好。 – MikMik 2010-12-16 10:43:32