如何从 Skia 路径几何中获取网格?

Posted

技术标签:

【中文标题】如何从 Skia 路径几何中获取网格?【英文标题】:How to obtain mesh from Skia path geometry? 【发布时间】:2020-02-08 12:09:59 【问题描述】:

我正在尝试弄清楚如何让 Skia 从路径几何中生成网格。我检查了SkPath::dumpSkPath::writeToMemorySkPath::serialize,但是它们似乎都输出路径内容而不是网格。

注意:我所说的网格是指由路径形状的镶嵌产生的三角形网格,以后可以使用非矢量图形 API(例如 OpenGL / Vulkan)进行渲染。类似于ID2D1Geometry::Tessellate 的输出。

【问题讨论】:

您在寻找 GrTessellator:github.com/google/skia/blob/… @SimonMourier 是的,但这些方法似乎不是public API 的一部分,并且没有明显的方法可以间接利用它们。 【参考方案1】:

正如我检查过的Skia source,从路径到三角形的镶嵌在渲染步骤中自动进行,然后将视频缓冲区推入 GPU 管道。所以你不必担心,图书馆会照顾自己。除非您想明确获得镶嵌步骤的输出,但我怀疑此 API 是否为用户导出。可能它对图书馆用户隐藏。

【讨论】:

“除非你想明确获得镶嵌步骤的输出”——嗯,这正是我想要的。而且我几乎可以肯定应该有一种正确的方法来做到这一点,因为提取网格似乎是一种常见的情况,当一个人需要重复地分别渲染大量路径并且重新生成矢量图形是昂贵的,而将它们预渲染到纹理时已经超出了问题。 那么无论如何,看看上面引用的链接。那里描述的 Tesselator 又在这里调用 PathToTriangles():github.com/google/skia/blob/master/src/gpu/…

以上是关于如何从 Skia 路径几何中获取网格?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 2D 矢量网格中的部分路径?

如何使用 SceneKit 从 COLLADA (.dae) 文件中获取几何图形

几何画板如何演示点的运动路径图形

Andorid Skia

Android:如何获取匹配缩略图 URI 的文件路径?

如何使用 CMD 从文件路径中获取文件夹路径