c++ - 如何在处理过程中更新 OpenGL 中的显示?

标签 c++ opengl

自从我上次使用 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/

相关文章:

c++ - 执行程序时调用任何 cURL 函数都会导致 "entry point not found"

C++ 类集,跳过前 2 个值

c++ - 使用 GlDrawElements() 绘制立方体?

c - 如何在 GLFW 中启用帧缓冲区透明度?

c++ - 如何使用Opus编解码器从webm文件中获取原始音频pcm数据

c++ - 结构中的整数、字符和 float

c++ - 对 `gluOrtho2D' 的 undefined reference

opengl - 在 OpenGL 中,背景对象绘制在前景对象的前面?

python - GTK 窗口捕获 : VPython (OpenGL) application

c++ - 不正确的观察矩阵