You*_*uka 5 c c++ rendering 2d real-time
通过编写处理系统(非视频)内存中的图像/帧数据的视频滤镜,渲染2D图形,应该是跨平台的(至少是Windows,Linux和OSX)并且工作得非常快,我查看了不同的渲染器,比如开罗,AGG和许多其他项目.我不喜欢GPU要求,因此到目前为止我的重点是软件渲染.
令人遗憾的是,开罗在复杂的路径和渐变上变得非常慢,并且通过微小的路径段产生了丑陋的几何缺陷,AGG也很慢,因为缺少优化需要用户进行大量工作,其他项目只是渲染到窗口或性能不重要对他们来说 Blend2D让我很好奇但是他的时间变得成熟了.
现在我问我:我应该渲染一个OpenGL帧缓冲区并通过几何库做2D到3D的东西,接受挑战从头开发软件渲染器(由SIMD,线程管道等加速)还是我想念一个适合我的图书馆?
推动与GPU相关的所有图形总是值得的,因为现在即使使用1080p或更大的图像,与视频内存的廉价数据传输也是如此?
OpenCV 的替代方案可以是SDL。至少有一个教程和文档专门讨论将视频数据流传输到硬件。当然,您必须在 glsl 中重写过滤器才能获得适当的加速。
也就是说,听起来您的问题可能会从 OpenCL 或 Cuda 等 GPU 计算解决方案中受益更多。在这种情况下,不涉及渲染,而是将数据发送到 GPU 内核,并在处理时将其取回。或者可以将其发送到 OpenGL/DirectX(视频内存可以很容易地重新用作纹理,而不会损失性能)进行渲染。如果您不热衷于超越 OpenGL api,您也可以使用compute-shader。工作原理与传统着色器类似,只是它在一次传递中进行计算,但有一些额外的约束和限制。