如何快速绘制弯曲的形状?
通过“快速”我认为应该尽可能多地使用硬件设施
“弯曲”是指由二次贝塞尔曲线或三次贝塞尔曲线定义的边界
“形状”是指“胖”笔划(即大于1px宽)或奇数/非零填充的“ 2D弯曲多边形”,可能带有孔(即字母“ O”)
我问是因为我所知道的选项有几个缺点:
对形状进行三角剖分并将其发送到OpenGL-在CPU上完成最困难的工作,并且可能使用太多/很少的三角形(即浪费/粗大)
纹理图集-必须在每次更改(形状,比例,旋转等)时重新计算/上载纹理
带符号的距离字段-大规模时细节看起来不漂亮或必须重新计算/上载纹理
NV_path_rendering-可以,如果它仅在Nvidia的显卡上不起作用
OpenVG-可能的话,如果它不能仅在移动设备上运行
?
*在我看来,OpenVG并没有完全向前发展。有谁知道它的未来前景吗?今天值得关注吗?
** OpenGL 4+提供了对多边形进行动态镶嵌的方法。可以使用某种方式从“三角剖分”选项中细化网格,以使形状边界至少看起来不“成角度”吗?
2
这篇GPU Gems文章通过识别弯曲的船体部分并分析计算像素着色器中的覆盖率来栅格化二次曲线,可能值得一看:developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch25.html
—
里克斯
@yuriks是的,Loop和Blinn完全忘记了它。但这不是专利吗?
—
Ecir Hana 2015年
另请参见《大规模并行矢量图形》,已发布在SIGGRAPH Asia 2014上
—
。– lhf
在您列出的问题中的选项与Loop和Blinn论文之间,我认为您已经穷尽了所有可能性。
—
内森·里德
您可以镶嵌一条线,像描述在这里。或者,您可以在计算着色器中进行三角剖分。
—
nikitablack