文本和矢量艺术的快速光栅化

Posted

技术标签:

【中文标题】文本和矢量艺术的快速光栅化【英文标题】:Fast rasterizing of text and vector art 【发布时间】:2012-01-04 07:16:43 【问题描述】:

假设有很多矢量形状(确定形状边界的贝塞尔曲线)。例如,一个充满小字母的页面。

用它创建位图的最快方法是什么?

几年前我曾经看过一个演示(现在找不到),其中一些人使用 GPU 来光栅化矢量图 - 他们能够实时放大/缩小页面。贝塞尔形状的 GPU 渲染当前状态如何?真的很快吗?比 CPU 快?常见和不常见的算法是什么?有没有这样的开源库?它使用什么语言? OpenGL 呢?

【问题讨论】:

GPU 仍在栅格化(在您的情况下)线段。但他们现在也可以在 GPU 上“镶嵌”贝塞尔曲线。 【参考方案1】:

NVIDIA 现在有一个 OpenGL 扩展可以做这些事情。我猜它基于 Microsoft RAVG 论文。

http://developer.nvidia.com/nv-path-rendering

【讨论】:

【参考方案2】:

也许您指的是以下论文之一:

Random-access rendering of general vector graphics (2008) (PDF)

Resolution independent curve rendering using programmable graphics hardware (2005) (PDF)

我认为这些几乎是最先进的。

【讨论】:

【参考方案3】:

几年前我曾经看过一个演示(现在找不到了),其中一些人使用 GPU 来光栅化矢量图 - 他们能够实时放大/缩小页面。

会不会是这个? http://alice.loria.fr/index.php/publications.html?Paper=VTM@2005

目前 GPU 渲染 Bezier 形状的状态如何?

和几年前差不多。细分着色器确实有帮助,但是当涉及到在没有中间细分阶段的情况下对曲线进行光栅化时,它在片段着色器中是一项繁重的工作。

【讨论】:

以上是关于文本和矢量艺术的快速光栅化的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS:将图像转化为矢量艺术剪影

OpenGL中着色器,渲染管线,光栅化

艺术编程-技术之声第12期

将大矢量图像转换为二进制矩阵的快速方法

编程艺术C++ 类实例化的方法

如何保存photoshop像素艺术