如何将 JOGL 动画捕获/导出到视频文件?我知道我可以通过glReadPixels()
抓取每一帧PBO
,但是我可以在网上找到一些库/源代码吗?或者有没有更好/更快的方法可以在不渲染整个场景的情况下做到这一点?如果我使用该glReadPixels()
方法,如果我调整托管 OpenGL 画布的窗口大小,是否会有不同的捕获图像大小?
我已经阅读了以下文章:
PS:我需要 Mac OS X 的这个软件。
如何将 JOGL 动画捕获/导出到视频文件?我知道我可以通过glReadPixels()
抓取每一帧PBO
,但是我可以在网上找到一些库/源代码吗?或者有没有更好/更快的方法可以在不渲染整个场景的情况下做到这一点?如果我使用该glReadPixels()
方法,如果我调整托管 OpenGL 画布的窗口大小,是否会有不同的捕获图像大小?
我已经阅读了以下文章:
PS:我需要 Mac OS X 的这个软件。
听起来您已经完成了大部分工作。我不确定某处是否有一个常用的库,但寻找和使用一个库可能比仅仅实现它更费力。
当您说“更快的方式而不渲染整个场景”时,您当然需要渲染一些东西来记录它,但是如果您想同时查看它,请不要渲染两次。您可以通过 FBO 渲染,然后glBlitFramebuffer
将图像渲染到后台缓冲区,并使用您glReadPixels
将结果复制回主内存进行编码。
鉴于编码可能需要一些时间,可能值得尝试异步复制结果(此处进行一些讨论)。
将图像直接写入磁盘并稍后使用诸如ffmpeg之类的东西编码为视频也很容易,尽管当然不那么方便。
当您的窗口调整大小时,您必须手动调整 FBO 附件的大小。除非您没有使用 FBO,否则我猜 jogl 会为您调整前/后缓冲区的大小。