似乎在OpenGL里不能画凹多边形,你可以把他们分成几个
凸多边形,然后用glEdgeFlag(... )使公共边不可见

解决方案 »

  1.   

    参考下面的代码 tess = gluNewTess();
    gluTessCallback(tess, GLU_BEGIN, (void (__stdcall *)())glBegin );
    gluTessCallback(tess, GLU_VERTEX, (void (__stdcall *)())glVertex3dv );
    gluTessCallback(tess, GLU_END, (void (__stdcall *)())glEnd);
    gluTessProperty(tess, GLU_TESS_BOUNDARY_ONLY, GL_TRUE ) ;
    gluTessBeginPolygon( tess , (GLvoid *)0 ) ;
    {
    gluTessBeginContour( tess ) ;
    for( i = 0 ; i < nVertexNum ; i ++ )
    gluTessVertex( tess, pTopVertex[i], pTopVertex[i] ) ;
    gluTessEndContour( tess ) ;
    }
    gluTessEndPolygon( tess ) ;