跳到主要内容

C++ Runtime

Rive C++ runtime(rive-cpp)是 Rive 最底层的 runtime。它可以加载 .riv 文件、推进状态机和动画,并绘制到任意 Renderer:既可以是 Rive renderer(Metal、Vulkan、D3D11、D3D12、OpenGL/WebGL),也可以是你自己的实现

更高层的 Rive runtime(Apple、Android、Flutter、Unity、Unreal)都会封装这个库。

当你有以下需求时,可以使用 C++ runtime:

  • 在 C++ 应用或游戏引擎中嵌入 Rive。
  • 面向还没有 Rive runtime 的平台。
  • 将 Rive 接入你自己的 renderer 或 render graph。

文档导航

  • 入门:构建 runtime,并用不到 100 行代码把 .riv 文件显示到屏幕上。
  • Renderers:为你的平台接入 GPU backend,例如 D3D11、D3D12、Metal、Vulkan 或 GL。
  • File & Artboard:导入 .riv 文件、查询画板,并创建 ArtboardInstance
  • State Machines:推进场景、转发指针事件,并响应状态变化。
  • Data Binding:用应用状态驱动 Rive ViewModel
  • Asset Loading:通过 FileAssetLoader 解析 out-of-band 图片、字体和音频。
  • Rendering Loop:理解每帧中的 beginFrame / flush 流程及其成本。
  • External Renderer:实现 RendererFactory,使用自己的 GPU backend。

架构速览

Rive runtime 渲染管线:你的应用持有 File(.riv 数据)和 RenderContext(D3D/Metal/Vulkan/...);File 产生 ArtboardInstance,ArtboardInstance 产生 StateMachineInstance,StateMachineInstance 与 RenderContext 一起供给 RiveRenderer,最终生成像素。

File / Artboard / StateMachineInstance 不知道任何 GPU 细节,而 Renderer / RenderContext 也不知道 Rive 内容本身。两部分都可以单独工作:你既可以通过自己的 Renderer 实现来渲染 Rive 内容,也可以用非 Rive 的绘制命令驱动 RiveRenderer

支持的平台与 API

BackendHeadersClass
D3D11rive/renderer/d3d11/render_context_d3d_impl.hppRenderContextD3DImpl
D3D12rive/renderer/d3d12/render_context_d3d12_impl.hppRenderContextD3D12Impl
Metalrive/renderer/metal/render_context_metal_impl.hRenderContextMetalImpl
Vulkanrive/renderer/vulkan/render_context_vulkan_impl.hppRenderContextVulkanImpl
OpenGL / WebGLrive/renderer/gl/render_context_gl_impl.hppRenderContextGLImpl
备注

C++ runtime 也是 Rive iOS/macOSAndroidFlutter runtime 的基础。这些平台提供的是一层薄封装,而不是独立引擎。

源码与许可证