Loops 对于循环和GLbegin

Loops 对于循环和GLbegin,loops,opengl,for-loop,Loops,Opengl,For Loop,我正试图用OpenGL在c中制作一个混乱的游戏,出于某种原因,我现在只创建了一个三角形和一个点,而我期望得到60000点。我认为这是因为begin和end语句在for循环中,如果不是,那么我不确定是什么错误。如果您能帮助解决此问题,我们将不胜感激 顺便说一句,混沌游戏是从一个点开始,然后在三角形上选择一个随机点,然后在所选点和原始点之间放置一个新点并继续,在我的情况下,我将重复这60000次。:) void显示(void) { glClear(GL_COLOR_BUFFER_BIT);//清除所

我正试图用OpenGL在c中制作一个混乱的游戏,出于某种原因,我现在只创建了一个三角形和一个点,而我期望得到60000点。我认为这是因为begin和end语句在for循环中,如果不是,那么我不确定是什么错误。如果您能帮助解决此问题,我们将不胜感激

顺便说一句,混沌游戏是从一个点开始,然后在三角形上选择一个随机点,然后在所选点和原始点之间放置一个新点并继续,在我的情况下,我将重复这60000次。:)

void显示(void)
{
glClear(GL_COLOR_BUFFER_BIT);//清除所有像素
int选择,i;
浮动x=0.15,y=0.85;
glColor3f(0.0,0.0,0.0);//这将图形颜色设置为黑色
glBegin(GL_LINE_LOOP);//三角形
glVertex3f(0.2,0.2,0.0);
glVertex3f(0.5,0.8,0.0);
glVertex3f(0.8,0.2,0.0);
glVertex3f(0.2,0.2,0.0);
格伦德();
glPointSize(3.0);//设置点大小
glBegin(GL_点);//这是原始点
glVertex3f(x,y,0.0);
格伦德();

对于(i=0;i尝试将
60000
替换为
60000
。在C中,
60000
计算结果为0


有关逗号运算符的详细信息,请参见其上的。

尝试将
60000
替换为
60000
。在C中,
60000
计算结果为0


有关逗号运算符的更多信息,请参阅上面的。

这很有效!非常感谢!我不知道为什么我在那里放了一个逗号,这是一个愚蠢的错误,再次感谢!很高兴知道!如果你喜欢这个答案,你能接受吗?如果不喜欢,你还需要什么吗?那很有效!非常感谢!我不知道为什么我在那里放了一个逗号,那是一个错误我错了,再次感谢你!很高兴知道!如果你喜欢这个答案,你能接受吗?如果不能,你还需要什么吗?
    void display(void)
{

   glClear (GL_COLOR_BUFFER_BIT); //clears all pixels

    int choice, i;
    float x = 0.15, y = 0.85;

    glColor3f (0.0, 0.0, 0.0); //this sets the drawing color to black
    glBegin(GL_LINE_LOOP); //The triangle
        glVertex3f(0.2, 0.2, 0.0);
        glVertex3f(0.5, 0.8, 0.0);
        glVertex3f(0.8, 0.2, 0.0);
        glVertex3f(0.2, 0.2, 0.0);
    glEnd();

    glPointSize(3.0); //sets point size
    glBegin(GL_POINTS); //this is the original point
        glVertex3f(x, y, 0.0); 
    glEnd();


    for(i=0; i<60,000; i++)
    {
        choice = (rand()%3);
        switch(choice)
        {
            case 0:
                    x = (x + 0.5)/2; //this is the x1+x2/2 part of the midpoint theorem
                    y = (y + 0.8)/2; //this is the y1+y2/2 part of the midpoint theorem
                glBegin(GL_POINTS); 
                    glVertex3f(x, y, 0.0);
                glEnd();
            break;

            case 1:             
                    x = (x + 0.8)/2; 
                    y = (y + 0.2)/2;
                glBegin(GL_POINTS); 
                    glVertex3f(x, y, 0.0);
                glEnd();
            break;

            case 2:
                    x = (x + 0.2)/2;
                    y = (y + 0.2)/2;
                glBegin(GL_POINTS); 
                    glVertex3f(x, y, 0.0);
                glEnd();

            default:
            break;
        }
    }

    glFlush ();
}

void init (void) 
{
    glClearColor (1.0, 1.0, 1.0, 0.0); //this sets the background color to white

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize (250, 250); 
    glutInitWindowPosition (100, 100);
    glutCreateWindow(argv[0]);
    init ();
    glutDisplayFunc(display); 
    glutMainLoop();
    return 0;
}