通过C++和GLUT更新图表

3
我在Xcode中编写了一段C++程序,用于实现符号回归和遗传编程。我想创建一个窗口,以可视化参考数据(2D点数组)和程序每个代最佳函数生成情况。
简单来说,我希望该窗口显示2个图表,并通过循环进行更新。根据我的理解,GLUT似乎是一个很好的框架,我已经编写了一个函数以显示参考数据(使用std::vector存储“referenceDataSet”变量)。
void renderScene(){
    // The min/max variables are just for scaling & centering the graph
    double minX, maxX, minY, maxY;
    minX = referenceDataSet[0].first;
    maxX = referenceDataSet[0].first;
    minY = referenceDataSet[0].second;
    maxY = referenceDataSet[0].second;
    for (int i = 0; i < referenceDataSet.size(); i++) {
        minX = min(minX, referenceDataSet[i].first);
        maxX = max(maxX, referenceDataSet[i].first);
        minY = min(minY, referenceDataSet[i].second);
        maxY = max(maxY, referenceDataSet[i].second);
    }
    glLoadIdentity ();
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin( GL_LINE_STRIP );
    glColor4f( 1.0, 0.0, 0.0, 1.0);
    for (int i = 0; i < referenceDataSet.size(); i++) {
        glVertex2f((referenceDataSet[i].first-minX)/(maxX-minX)-0.5, (referenceDataSet[i].second-minY)/(maxY-minY)-0.5);
    }
    glEnd();
    glFlush();
}

void renderInit(int argc, char **argv){
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowSize(600, 600);
    glutCreateWindow("");
    glutDisplayFunc(renderScene);
    glutCheckLoop();
}

这个问题在于我不确定应该如何更新窗口,或绘制一个不断变化的第二个图形。此外,这是我在 Stack Overflow 上的第一个问题,如果我做错了什么,或者任何内容难以理解,请谅解。我已经尽力搜寻答案,但并没有找到相关的信息。
1个回答

2
在glut或OpenGL中,glutIdleFunc(void (*func)(void))用于更新场景。空闲函数将每次刷新场景时调用glutDisplayFunc
参考文献在这里http://www.opengl.org/resources/libraries/glut/spec3/node63.html 我猜renderScene()是您的glutDisplayFunc。您需要使用glutIdleFunc注册一个空闲函数。在空闲函数中,您可以更改第二个不断变化的图形的参数,然后在完成空闲函数中的更改后,将再次调用renderScene()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接