glPolygonMode(GL_BACK,GL_LINE)不起作用

时间:2012-11-18 07:56:58

标签: opengl

glEnable(GL_CULL_FACE);
glCullFace(GL_FRONT);

glPolygonMode(GL_BACK,GL_LINE);

在上面的代码示例中,glPolygonMode会抛出无效的枚举错误?如何解决这个问题?

1 个答案:

答案 0 :(得分:8)

如果您问题的面部或模式(分别是第一个和第二个参数)不是可接受的值,则会生成

GL_INVALID_ENUM。对于前面和后面的多边形,您的第一个参数必须为GL_FRONT_AND_BACK,因为此方法已弃用GL_FRONTGL_BACK

修改

因为您似乎在评论中提出了其他问题。如果要在填充多边形周围绘制墨迹,则应渲染几何图形;渲染一次填充和一次线框。略微移动线框以避免深度战斗。否则两个几何可能重叠

// first draw your polygon filled (this is assuming your glPolygonMode is set to GL_FILL - this is the default mode normally)
// draw your polygons

// offset the wireframe 
glEnable(GL_POLYGON_OFFSET_LINE);
glPolygonOffset(-1,-1);

// draw the wireframe
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
// draw the same polygons again

// restore default polygon mode
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

glDisable(GL_POLYGON_OFFSET_LINE);