如何使用Legacy OpenGL绘制不同的彩色线条

How to draw different colored line strips with Legacy OpenGL?

本文关键字:彩色 何使用 Legacy OpenGL 绘制      更新时间:2023-10-16

因此,我有一个x和y坐标的成对矩阵,矩阵中的每一行代表一条路线,我想表示为opengl中的gl_line_strip。问题是我想每次都用不同的颜色绘制线条。我以为我的代码会起作用,但是以某种方式,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;
}

我将所有节点推入矩阵中的第一行中,因此我实际上是在绘制一个大gl_line_strip。非常感谢所有帮助!