这是我编写的一个函数,它起了螺旋式的作用:
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();
}
问题在于螺旋被绘制为虚线而不是一条连续线。
我可以使用GL_LINE_LOOP而不是GL_LINES获得连续线,但是(可以理解)从螺旋的中间到外部绘制一条线。所以我知道我的逻辑是好的,我只是不确定这样做的opengl方式。
答案 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
。