跳到主要内容

外部 Renderer

除了使用官方 Rive renderer backend,你也可以实现自己的 renderer,把 Rive 内容接入已有引擎或自定义图形管线。

这种方式适合:

  • 已有成熟渲染器或游戏引擎。
  • 需要与现有 render graph 深度整合。
  • 目标平台没有现成的 Rive backend。
  • 需要对资源生命周期、pipeline state、命令提交进行完全控制。

核心思路

Rive 的 ArtboardInstance 会调用 renderer 接口发出绘制命令。你的 renderer 需要把这些命令转换为底层图形 API 或引擎绘制操作。

常见职责包括:

  • 路径填充与描边。
  • 变换矩阵。
  • 裁剪。
  • 混合模式。
  • 图片、字体和其他资源。
  • render target 与 command submission。

与 Factory 的关系

在 Rive runtime 中,Factory 通常负责创建运行时需要的图形资源,例如路径、图片或字体等。自定义 renderer 往往也需要配套自己的 Factory 实现。

// 伪代码:自定义 Factory 和 Renderer
class MyFactory : public rive::Factory { /* ... */ };
class MyRenderer : public rive::Renderer { /* ... */ };

集成建议

  • 先用官方 renderer backend 跑通内容加载、状态机和数据绑定。
  • 再逐步替换为自定义 renderer,便于定位问题。
  • 为裁剪、混合和复杂路径准备测试用例。
  • 注意字体、图片和音频等 out-of-band assets 的加载路径。
  • 如果目标是游戏引擎,建议把 Rive 绘制封装为独立 render pass。

更多基础流程请参阅渲染循环资源加载