Как рисовать разноцветные полосы с помощью Legacy OpenGL? - PullRequest
0 голосов
/ 03 мая 2019

Итак, у меня есть матрица пар координат x и y, каждая строка в матрице представляет маршрут, который я хотел бы представить как GL_LINE_STRIP в OpenGL.Дело в том, что я хотел бы каждый раз рисовать линии разными цветами.Я думал, что мой код будет работать, но почему-то OpenGL продолжает рисовать line_strips одним и тем же цветом.

Я думал, что это сработает, xy - это матрица пар координат:

static void Redraw(void)
{
    ...
    glClear(GL_COLOR_BUFFER_BIT);
   //drawing routes
    srand(time(NULL));
    for(int i = 0; i < xy.size(); i++)
    {   
        vector<pair<int, int>> route = xy[i];
        double r = ((double) rand() / (RAND_MAX));
        double g = ((double) rand() / (RAND_MAX));
        double b = ((double) rand() / (RAND_MAX));
        glColor3f(r,g,b);
        glLineWidth(2);
        glBegin(GL_LINE_STRIP);

        for(int j = 0; j < route.size();j++)
            glVertex2d(route[j].first, route[j].second);

        glEnd();
    }
    glFlush();
}

и мой главный:

int main(int argc,char *argv[])
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(1080,720);
    glutInitWindowPosition(0,0);
    glutCreateWindow("h_constante");
    gluOrtho2D(0,1000,0,1000);
    glutDisplayFunc(Redraw);
    glutMainLoop();


    return 0;
}
...