glPolygonMode存在问题 - GL_FILL模式下跳过顶点

3
我在尝试绘制一个多边形并填充特定颜色时遇到了奇怪的问题:
如果我将多边形模式设置为:
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
多边形渲染得很好:
但是,一旦我用以下代码替换该行:
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
多边形填充不正确,但似乎大多数线条都被投影到其第一个顶点或类似位置:
我显然做错了什么。我想做的是让颜色保持在多边形内,但它似乎忽略了几个顶点。可能出了什么问题?
这里是我的代码的一些选定部分,这可能非常相关。我跳过了一些数据结构加载和其他可能不太相关的内容:
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);

    glutInitWindowSize(640, 480);
    glutInitWindowPosition(150, 100);
    glutCreateWindow("CR-View GL");

    glutDisplayFunc(display);

    glutMainLoop();
    return 0;
}

void display(void) {
    glClearColor(0, 0, 0, 0);
    glClear(GL_COLOR_BUFFER_BIT);
    /* Set drawing color */
    glColor3f(1, 0, 1);

    drawPolys(currentDrawingMode);

    /* Clear screen and draw */
    glutSwapBuffers();
}

// Draws the polygons
void drawPolys (int id) {   
    int poly, vertex;
    // set wireframe mode (if an empty polygon is required)
    if (id == 0) {
        glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    }

    //Sets color fill mode
    if (id == 1) {
        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    }

    // Draw each polygon...
    for (poly = 0; poly < polyCount; poly++) {

        glBegin(GL_POLYGON);
            // Draw each vertex...
        for (vertex = 0; vertex < Polygons[poly].vertexCount; vertex++) {
            glVertex2f((float)Polygons[poly].vertices[vertex].x, (float)Polygons[poly].vertices[vertex].y);
        }
        glEnd();
    } 
}

2
你能否提供更多有关如何绘制多边形的细节?例如,可以提供代码作为示例...因为polygonMode可能不是问题所在。 - ZarakiKenpachi
1
刚刚添加了一些代码。 - Sergio Morales
1个回答

5

如果您正在使用 GL_POLYGON ,请注意它仅支持多边形。


那确实听起来像是我的问题。除了GL_POLYGON之外,是否有支持凹多边形的其他东西? - Sergio Morales
你需要使用三角形代替。 - Tianyun Ling
2
@SergioMorales: 对你的多边形进行三角剖分,然后使用GL_TRIANGLES - genpfault

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接