绘制一个连续的螺旋?

时间:2017-05-06 00:09:25

标签: c++ opengl

这是我编写的一个函数,它起了螺旋式的作用:

void drawSpiral(GLfloat x1, GLfloat y1, GLfloat radius)
{
    int lineAmount = 500;
    GLfloat piMultiplier = 10.0f * 3.141592654;

    glBegin(GL_LINES);

    for (int i = 0; i <= lineAmount; i++) 
    {
        GLfloat theta = i/lineAmount*piMultiplier;
        GLfloat x = x1 + (radius*cos(i*piMultiplier/lineAmount));
        GLfloat y = y1 + (radius*sin(i*piMultiplier/lineAmount));

        glVertex2f(x, y);

        radius += 1;
    }
    glEnd();
}

问题在于螺旋被绘制为虚线而不是一条连续线。

spiral-lines

我可以使用GL_LINE_LOOP而不是GL_LINES获得连续线,但是(可以理解)从螺旋的中间到外部绘制一条线。所以我知道我的逻辑是好的,我只是不确定这样做的opengl方式。

1 个答案:

答案 0 :(得分:4)

您可以这样做:

  • GL_LINES,其顶点数组如:[start, end, start, end...]。在这种情况下,您需要一个非常冗余的数组,如:[A, B, B, C, C, D]

  • GL_LINE_STRIP,其顶点数组如[A, B, C, D]

  • GL_LINE_LOOP会在最终顶点和第一个顶点之间创建一条线,我不会认为这就是你想要的。

简而言之,请使用GL_LINE_STRIP而不是GL_LINES