如何使用 glut openGL 绘制一个 4 角星

How to draw a 4 pointed star using glut openGL

我想在 C++ 中使用 GLUT 和 openGL 绘制一个四角星。这是我的代码

glBegin(GL_TRIANGLE_FAN);
    glVertex3f(0.0f,6.0f,0.0f);
    glVertex3f(1.0f,4.0f,0.0f);
    glVertex3f(3.0f,3.0f,0.0f);
    glVertex3f(1.0f,2.0f,0.0f);
    glVertex3f(0.0f,0.0f,0.0f);
    glVertex3f(-1.0f,2.0f,0.0f);
    glVertex3f(-3.0f,3.0f,0.0f);
    glVertex3f(-1.0f,4.0f,0.0f);

glEnd();

问题是形状直接从0,6变成了3,3

谁能帮我解决这个问题, screenshot

我想要这样的东西 desired output

GL_TRIANGLE_FAN 基元的第一个点始终保持固定(参见 Triangle primitives)。只需在“内部”点之一开始 GL_TRIANGLE_FAN primitiv:

glBegin(GL_TRIANGLE_FAN);
    
    glVertex3f(1.0f,4.0f,0.0f);
    glVertex3f(3.0f,3.0f,0.0f);
    glVertex3f(1.0f,2.0f,0.0f);
    glVertex3f(0.0f,0.0f,0.0f);
    glVertex3f(-1.0f,2.0f,0.0f);
    glVertex3f(-3.0f,3.0f,0.0f);
    glVertex3f(-1.0f,4.0f,0.0f);

    glVertex3f(0.0f,6.0f,0.0f);

glEnd();

您正在创建一个三角形扇形,但将其中心顶点(初始顶点)设置为 0,6,0。

您可能想要更改几何图形,使中心顶点位于原点(为了对称)。它还可以将第一个顶点向下移动到底部,如@Rabbid76 所示。