我有一个程序模拟随时间变化的物理系统.我希望以预定的间隔(例如每10秒)输出模拟状态到文件的可视化.我想以这样的方式做到这一点,即很容易"关闭可视化"而根本不输出可视化.
我正在将OpenGL和GLUT作为图形工具来进行可视化.然而问题似乎是,首先,它看起来只是输出到窗口而无法输出到文件.其次,为了生成可视化,您必须调用GLUTMainLoop并停止执行main函数 - 从那时起调用的唯一函数是来自GUI的调用.但是我不希望这是一个基于GUI的应用程序 - 我希望它只是一个从命令行运行的应用程序,它会生成一系列图像.有没有办法在GLUT/OpenGL中执行此操作?或者OpenGL完全是错误的工具,我应该使用别的东西
我需要使用OpenGL在屏幕外渲染相当多的(数万个)图像.
我在Windows下运行并使用QT作为框架.解决方案可以只是Windows,它并不重要.
从我发现使用Google的内容来看,有很多选项可以做到这 一点.这篇看似相当过时的文章提出了几种方法,其中相关的方法是:
CreateDIBSection并以某种方式将纹理绑定到它.该线程(消息6)建议使用QT特定的方式QGLWidget::renderPixmap
我的问题是 - 哪一个是最快的方式?pbuffers似乎是最安全的赌注,因为它保证在硬件上执行但不使用CreateDIB方法也通过硬件?QT方法怎么样?这个似乎存在一些上下文创建问题.当然我不想为我创建的每个图像创建新的上下文.
有没有人对此有一些很好的经验?
编辑:回答评论 -
我有一个不变的场景,我从许多不同的角度渲染它.现在,图像将返回给用户,并由CPU处理.可能在未来它们将在GPU上进行处理.