Skip to content

关于tgfx技术选型的疑惑 #413

Answered by domchen
xland asked this question in General
Dec 30, 2024 · 1 comments · 3 replies
Discussion options

You must be logged in to vote

我们的跨平台要支持:Windows, macOS,Linux, iOS,Android, Web(WASM),鸿蒙。你现在的假设是这列表里的每个平台里都存在一个和 Skia 对应的系统接口模块,稍微搜索一下就会知道结论是没有。不只是没有,就算有的平台有功能也缺失很多。就算功能数量接近的性能也完全被 Skia 碾压。

一个个点解释:除了 Windows 的 Direct2D,macOS 的 CoreGraphics,其他平台大部分就是直接用 Skia,并没有从系统透出接口让你可以做二次封装。比如 Android 内置的 Skia 只服务它的 UI 框架,在 Java 透出的 Canvas 接口并不能用来渲染到自定义的 OpenGL 纹理上,你最多只能用它渲染到 Bitmap 上,那只有软件渲染了,性能很差。更别说 Android Canvas 压根没有暴露出 Skia 的多少完整能力。

再以 macOS 的 CoreGraphics 为例,它只支持软件渲染,完全没有 GPU 渲染。而且它就算只和 Skia 对比纯软件渲染也比 Skia 渲染慢好几倍。而且功能上缺失大量 Skia 提供的能力,比如矢量的布尔操作,全行业的方案有且只有 Skia 做了。另外你的假设存在一个明显问题,桌面平台基本没有包体压力,所以为了减少包体在桌面平台做跨平台封装是个伪需求,封装完性能还不如 Skia。

我们的目标是要在移动端做到比 Skia 包体小,然后在所有平台做到比 Skia 性能更好,这个才是核心的价值。TGFX 目前还在高速迭代过程,但是初步的测试结果已经可以看到很不错的成果:在移动端包…

Replies: 1 comment 3 replies

Comment options

You must be logged in to vote
3 replies
@xland
Comment options

@domchen
Comment options

Answer selected by domchen
@xland
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants