0

我想使用名为libCinder的 grate lib ,我查看了它的文档,但不知道是否有可能以及如何在不先显示它的情况下渲染某些东西?

假设我们要创建一个简单的随机颜色 640x480 画布,上面有 3 个红白蓝圆圈,并从中获取 RGB\HSL\anychar *到原始图像数据,而不向用户显示任何窗口。(假设我们有控制台应用程序项目类型)。我想将这种功能用于服务器端实时视频流生成和视频流,我更喜欢使用ffmpeg,这就是为什么我想要一个指向一些 RGB\HSV 或任何带有实际图像数据的缓冲区的指针。如何用 libCIinder 做这样的事情?

4

1 回答 1

1

您将不得不使用离屏渲染。libcinder就图形而言,似乎只是一个包装器OpenGL,因此您可以使用OpenGL代码来实现这一点。

由于OpenGL没有用于屏幕外渲染的本机机制,因此您必须使用扩展。可以在此处找到使用这种扩展的教程,称为 Framebuffer Rendering 。您必须进行修改renderer.cpp才能使用此扩展程序的命令。

使用这种扩展的另一种方法是使用Mesa 3D,它是OpenGL. Mesa有一个软件渲染引擎,允许它在不使用视频卡的情况下渲染到内存中。这意味着您不需要视频卡,但另一方面渲染可能会很慢。在 Demos文件Mesa中有一个渲染到内存缓冲区的示例。此解决方案可能需要您编写一个完整的类,类似于并且将使用's intrusctions 而不是's 或's。src/osdemos/zipRendererRenderer2dRendererGlMesaWindowsMac

于 2011-12-21T12:07:58.847 回答