Cinder:如何获得一个指针的数据帧生成,但从未显示在屏幕上

Cinder: How to get a pointer to dataframe generated but never shown on screen?

本文关键字:屏幕 显示 数据帧 何获得 指针 一个 Cinder      更新时间:2023-10-16

有一个gregrate lib我想使用称为libCinder,我看了看它的文档,但没有得到,如果它是可能的,以及如何渲染的东西没有显示它第一?

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

您将不得不使用屏幕外呈现。libcinder似乎只是OpenGL的包装器,就图形而言,所以您可以使用OpenGL代码来实现这一点。

由于OpenGL没有屏幕外呈现的本机机制,您将不得不使用扩展。可以在这里找到使用这种扩展的教程,称为Framebuffer Rendering。你将不得不修改renderer.cpp使用这个扩展的命令。

使用这种扩展的另一种选择是使用Mesa 3D,它是OpenGL的开源实现。Mesa有一个软件渲染引擎,允许它在不使用显卡的情况下渲染到内存。这意味着你不需要显卡,但另一方面,渲染可能会很慢。在demo zip文件中,Mesa有一个向src/osdemos/的内存缓冲区渲染的示例。这个解决方案可能需要您编写一个完整的Renderer类,类似于Renderer2dRendererGl,它将使用Mesa的入侵而不是WindowsMac的入侵。