gpt4 book ai didi

c++ - 通过 C++ 和 GLUT 更新图形

转载 作者:太空狗 更新时间:2023-10-29 21:47:05 28 4
gpt4 key购买 nike

我在 Xcode 中编写了一个 C++ 程序来实现符号回归和遗传编程。我想创建一个窗口来可视化引用数据(二维点数组)和程序生成每一代的最佳函数。

简单地说,我希望窗口显示 2 个图表,并用 for 循环更新它。据我了解,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 的第一个问题,如果我在这里做的不正确,或者其中的任何一个难以理解,我深表歉意。我尽我所能搜索答案,但找不到任何相关内容。

最佳答案

在 glut 或 OpenGL 中,glutIdleFunc(void (*func)(void)) 用于更新场景。每次场景刷新时,idle func 都会调用 glutDisplayFunc

引用在这里http://www.opengl.org/resources/libraries/glut/spec3/node63.html

我猜 renderScene() 是您的 glutDisplayFunc。并且您需要使用 glutIdleFunc 注册一个空闲函数。在空闲函数中,您可以更改不断变化的第二个图形的参数,空闲函数中的更改完成后,将再次调用 renderScene()

关于c++ - 通过 C++ 和 GLUT 更新图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13788996/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com