GL_POLYGON没有正确填写?

时间:2009-08-13 03:55:00

标签: opengl rendering

为什么这些线条出现在我的形状中?

我正在初始化OpenGL:

glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glDisable(GL_COLOR_MATERIAL);
glEnable(GL_BLEND);
glEnable(GL_POLYGON_SMOOTH);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(0, 0, 0, 0);

画出这样的形状:

glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1, 0, 0);
glBegin(GL_POLYGON);
    glVertex2f(-5, -5); // bottom left
    glVertex2f(5, -5); // bottom right...
    glVertex2f(6, 0);
    glVertex2f(5, 5);
    glVertex2f(-5, 5);
glEnd();

无论是顺时针还是逆时针都无关紧要。

2 个答案:

答案 0 :(得分:3)

我认为禁用GL_POLYGON_SMOOTH会解决这个问题,但是你会失去抗锯齿功能。 FSAA可以作为替代方案,但速度会慢一些。

编辑:环顾四周,有很多使用glBlendFunc( GL_SRC_ALPHA_SATURATE, GL_ONE );

的例子

答案 1 :(得分:3)

GL_POLYGON_SMOOTH是一种过时且缓慢的多边形抗锯齿方法。它还会导致您在上面看到的问题。

使用Multisample缓冲区扩展是在现代机器上执行快速抗锯齿的最佳方法。阅读更多here.