通过编写一个视频过滤器来处理系统中的图像/帧数据(而不是video ),渲染2D图形,应该跨平台(至少 Windows,Linux和OSX )并且工作非常快,渲染器,例如CairoAGG和许多其他项目。我不希望没有GPU要求,因此到目前为止,我的工作重点是软件渲染。

遗憾的是,开罗在复杂的路径和坡度上会变得非常慢,并且由微小的路径段产生难看的几何缺陷,而AGG也会很慢,因为缺少优化,这需要用户进行大量工作,其他仅在窗口上渲染的项目或性能并不重要为他们。 Blend2D使我感到好奇,但花点时间使自己变得成熟。

现在我问我:我应该只渲染到OpenGL帧缓冲区并通过几何库执行2D到3D的工作,挑战从头开始开发软件渲染器(由SIMD,线程管道等加速)的问题。还是我错过了一个适合我的图书馆?

由于这些天来往于显存的廉价数据传输,即使使用1080p或更大的图像, push 与GPU相关的所有图形是否总是值得吗?

最佳答案

替代OpenCV可以是SDL。至少有一个专门讨论streaming video data to the hardware的教程和文档。当然,您必须在glsl中重写滤镜才能获得不错的加速度。

就是说,听起来您的问题可能会受益于OpenCL或Cuda之类的GPU计算解决方案。在这种情况下,不涉及渲染,而是将数据发送到GPU内核,并在处理后将其取回。或者可以将其发送到OpenGL / DirectX(可以很容易地将视频内存作为纹理重用而不会降低性能)进行渲染。如果您不希望超越OpenGL API,也可以使用计算着色器。像传统着色器一样工作,不同之处在于它可以通过计算,但有一些其他限制和约束。

07-24 09:36
查看更多