在openGL中绘制未填充的矩形形状

时间:2014-06-13 09:17:24

标签: opengl

我想在OpenGL中绘制未填充的矩形形状,但是当我使用glBegin(GL_QUADS)glBegin(GL_POLYGON)时,结果形状已填充,但我想要填充。我如何绘制未填充的矩形。

void draweRect(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0,0.0,1.0);
    glLineWidth(30);
    glBegin(GL_POLYGON);
        glVertex2i(50,90);
        glVertex2i(100,90);
        glVertex2i(100,150);
        glVertex2i(50,150);
    glEnd();
    glFlush();   
}

3 个答案:

答案 0 :(得分:8)

使用GL_LINE_LOOP(而不是GL_POLYGON)在多边形的周边绘制连接的一系列线段,而不是填充多边形。

或者,您可以使用glPolygonMode (GL_FRONT_AND_BACK, GL_LINE) ...请记住将其设置回默认glPolygonMode (GL_FRONT_AND_BACK, GL_FILL)以恢复正常(已填充)渲染。

答案 1 :(得分:4)

您需要为渲染设置填充模式。

您可以使用glPolygonMode(...);方法。

尝试以下方法:

void draweRect(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0,0.0,1.0);
    glLineWidth(30);

    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

    glBegin(GL_POLYGON);
        glVertex2i(50,90);
        glVertex2i(100,90);
        glVertex2i(100,150);
        glVertex2i(50,150);
    glEnd();

    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

    glFlush();   
}

答案 2 :(得分:0)

这个对我有用..

glBegin(GL_LINE_LOOP);
    glVertex2f(x1,y1);
    glVertex2f(x2,y1);
    glVertex2f(x2,y2);
    glVertex2f(x1,y2);
glEnd();