glBegin(GL_TRIANGLE_STRIP);
        for(i; i <= degree; i++)
        {
            float
            sunX=-200/2*cos(i*M_PI/180),
            sunZ=200/2*sin(i*M_PI/180);

            glVertex3f(0, 0, 0);
            glVertex3f(sunX, 0, sunZ);
        }
        glEnd();

此代码有效。但...
for(i; i <= degree; i++)
        {
            float
            sunX=-200/2*cos(i*M_PI/180),
            sunZ=200/2*sin(i*M_PI/180);
                            glBegin(GL_TRIANGLE_STRIP);
            glVertex3f(0, 0, 0);
            glVertex3f(sunX, 0, sunZ);
                            glEnd();
        }

但这是行不通的。 WTF?逻辑在哪里?
我需要在循环中插入另一个代码以输出文本:
glPushAttrib(GL_LIST_BIT);
glListBase(1000);
glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);
glPopAttrib();

但我无法插入它,因为beetwen glBegin(GL_TRIANGLE_STRIP)和glEnd()无法正常工作。而且我不能在里面写glBegin(GL_TRIANGLE_STRIP),glEnd()进行循环,因为它在那里不起作用。

最佳答案

每次调用glBegin(GL_TRIANGLE_STRIP);时,您都会开始创建一个全新的三角带。它不会连接到for循环以前的迭代中的其他顶点。

10-04 17:23