自从我上次使用 OpenGL 以来已经一年多了,所以我对这个话题感到生疏。
我有一张图像正在做一些处理,具体来说是颜色聚类,我想在每次循环迭代后更新图像,这样我就可以在发生变化时看到变化,而不是在处理结束时看到变化完成。
这就是当前发生的情况。显示原始图像,从键盘回调函数执行颜色聚类函数,处理图像并在程序控制离开颜色聚类函数时显示更新后的图像。
我尝试在聚类算法的每次迭代后调用 glutPostRedisplay(),并且尝试在其中使用 glutIdleFunc 回调和 glutPostRedisplay()。在这两种情况下,它都不会在图像处理完成之前调用显示回调。
我如何让它在处理图像时更新图像(即调用显示回调)?
最佳答案
为了解决这个问题,我在每次迭代结束时明确调用我的显示回调函数,而不是让 glut 决定何时调用显示回调的最佳时间。在伪代码中,解决方案看起来像这样。
colourClustering()
{
loop
{
image processing code
}
display() // Previously I tried using glutPostRedisplay() here.
}
...
display()
{
drawing code
glutSwapBuffers()
}
...
main()
{
....
glutDisplayFunc(display);
....
}
但是,这感觉像是一种变通方法,而不是真正的解决方案。
关于c++ - 如何在处理过程中更新 OpenGL 中的显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5509091/