下面是 Blinc 的技术架构与渲染流程说明(来自官方源码 & 文档) 和相关技术(wgpu 与 Taffy)的直观解释:
Blinc 是一个用 Rust 写的 GPU 加速、声明式、响应式 UI 框架,目标类似于 Flutter / React UI,但直接渲染到 GPU,不依赖浏览器 webview。它支持现代 UI:
Blinc 的内部架构大致分为:
Your Application (你的 UI 代码) ↓ blinc_app ← 高级应用入口框架 blinc_layout ← 布局引擎(Flexbox) blinc_gpu ← GPU 渲染管线 blinc_core ← 响应式核心 + 状态机 + 动画 blinc_text/svg/image ← 字体、SVG、图片支持 blinc_platform_* ← 平台适配(窗口事件、输入)
在架构图里:
blinc_app ← High-level API ├─ blinc_layout ← Flexbox (Taffy) ├─ blinc_gpu ← Rendering (SDF + wgpu) ├─ blinc_text/svg ← Text & Vector Rendering ├─ blinc_core ← Reactivity + Animation └─ blinc_platform_* ← Platform glue
它的渲染流程大致是:
布局计算(Layout)Blinc 使用 Taffy 做 Flexbox 布局 → 输出每个 UI 元素的位置和尺寸。(project-blinc.github.io)
构建渲染树(Render Tree)按布局计算好的结果,组织渲染元素。
GPU 渲染(Render Pass)使用 wgpu 发起 GPU 渲染命令,将 UI 绘制到屏幕。(GitHub)
wgpu 是 Rust 社区里非常流行的 GPU 抽象 API:
✔ 它实现了 WebGPU 标准,本质上是跨平台 GPU 渲染 + 计算接口。✔ 底层能接驾 Vulkan、Metal、DirectX12 等。
通俗理解:
💡 wgpu ≈ WebGPU 的 Rust 版本 + 多后端适配
它隐藏了 GPU 各个平台的差异,让你编写统一的渲染代码。Blinc 用它来:
🧠 渲染流程在 GPU 上通常是这样的:
create GPU device + queue compile shaders create render pipeline encode draw commands submit queue
wgpu 提供了这些核心步骤的 Rust API,使得 GPU 渲染能在 Windows / Linux / macOS / Android / iOS 上统一运行。(jinleili.github.io)
Taffy 是一个纯 Rust 的 Flexbox 布局引擎。
它主要负责:
所以在 UI 构建流程中:
UI Tree ───> 输入到 Taffy 布局计算 Output ──> 每个节点的 rect / 样式
它类似于浏览器里 CSS 布局的引擎,但更轻量。Blinc 使用它来实现响应式、弹性布局。(project-blinc.github.io)
下面是简化版的渲染步骤:
用户写类似:
div() .w(ctx.width) .h(ctx.height) .child(text("Hello Blinc!"))
框架 build 出一个虚拟 UI 树。
框架根据布局规则,把 UI 树传给 Taffy:
layout_tree = taffy.compute_layout(ui_tree)
→ 得到每个元素的布局结果。
框架将布局结果组装成渲染指令,并且用 wgpu:
最终把渲染输出给显示 surface 或 framebuffer,由平台适配器提交到屏幕。(GitHub)
💡 Blinc 是一个 Rust GPU UI 框架 —— UI 先由 Taffy 计算布局,再用 wgpu 在 GPU 上渲染输出。(project-blinc.github.io)
如果你想,我还能:
你想看哪个?
Github开源生信云平台 DEMO