Skia、Cairo和Direct2D,哪个功能最丰富?

15

仅仅是个好奇问题。
我知道:
Skia、Cairo:库
Direct2D:API
但是,在没有任何额外组件的情况下,仅在 Windows 平台上,哪一个承载了最多功能?我不是在谈论性能或编程简单性。
Cairo 是否有可能在 Windows 平台上使用 D2D 作为呈现后端?


1
如果你喜欢2D绘图,可以看看Moz2D或Chromium(的angle?)等复合库,这些库可以根据系统支持或用户偏好改变底层库,如OpenGL(ES)、Direct2D、Skia或其他库。 - user3648895
1个回答

26

我在Sciter中同时使用这三种图形后端,所以您可以比较它们的运行效果。

截至今天(2017年11月20日):

功能集:

就功能而言,Skia和Direct2D具有相同的功能集。并且两者在功能上都超越了Cairo。

从这三个选项中,只有Direct2D(Direct2D v 1.1)支持打印。而Skia和Cairo则可以生成PDF文件,因此对于真正的打印,您需要使用第三方工具。

3D集成:

Direct2D与DirectX有很好的集成 - 它们可以在同一个DXGI设备上工作。

但是将Skia与现有的3D OpenGL代码集成起来并不那么容易。即使Skia可以使用OpenGL后端,它也会更改OpenGL设备的状态,从而导致问题。

性能:

使用Direct2D,您可以达到60-250 FPS。

在Windows上,当与OpenGL后端一起使用时,Skia的性能可能比Direct2D要好。但实际情况可能有所不同。

平台:

在Windows上,建议使用Direct2D或Skia。

在MacOS上 - 明确使用带有OpenGL后端的Skia。它比Mac的本地CoreGraphics要好得多。

在Linux / GTK上:使用Cairo,因为这是GTK / Gnome 3上的默认渲染API。而Cairo在那里运行得非常出色。


4
6个月后,OpenGL在MacOS上被禁止使用,至少一年前我们就能预见到这一点。Metal OpenGL后端在哪里?文本和字体怎么样了?它们已经成为普通应用程序中最昂贵的操作。 - Lothar
1
如果不是OpenGL,那就用Vulkan或Metal。至于字体...这三个都非常好且快速地呈现字体。ClearType或其等效物在这三个平台上都得到支持。如果有疑问,您可以在所有平台上尝试Sciter示例。 - c-smile
2
值得注意的是,Skia还具有Vulkan后端,而Direct2D显然没有。此外,在最近的新闻中:LibreOffice从Cairo迁移到Skia - Hi-Angel
当你说Skia比Core Graphics更好时,你使用的是什么指标?你是指它更快吗?我的理解是,输出保真度与Core Graphics无法匹敌。 - johnbakers
2
@johnbakers 这里的“更好”意味着:更快(特别是使用OpenGL/HW后端)和更具功能性。此外,据我所知,CoreGraphics是纯CPU光栅化器。输出保真度相当。 - c-smile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接