跳到主要内容

Command Queue

C++ runtime 的渲染器会把绘制操作组织为一组命令,再提交给底层图形 API。Command Queue 用于描述这些 GPU 工作的顺序,帮助 renderer 在不同 backend(Metal、Vulkan、D3D、OpenGL 等)之间保持一致的抽象。

Command queue

为什么需要命令队列?

Rive 文件中的矢量图形、裁剪、混合和路径渲染可能会产生多种 GPU 操作。命令队列可以:

  • 收集当前帧的绘制命令。
  • 批量提交 GPU 工作。
  • 管理不同 render target 或 pass 之间的顺序。
  • 让 renderer 后端以适合自身 API 的方式实现提交。

与渲染循环的关系

在一帧中,通常会先调用 beginFrame 准备渲染上下文,然后执行 Rive 绘制命令,最后通过 flush 或等效操作提交命令。

renderContext->beginFrame({width, height});
artboard->draw(renderer);
renderContext->flush();

集成建议

如果你使用官方 Rive renderer backend,大多数命令队列细节会被封装起来。你只需要在正确时机开始帧、绘制并提交。

如果你要接入自己的 renderer 或引擎 render graph,则需要关注:

  • Rive pass 需要的 render target。
  • 与主引擎渲染命令的同步关系。
  • 纹理、buffer、pipeline state 的生命周期。
  • 多帧资源是否需要 ring buffer 或延迟释放。