Files
engine/docs/zh/core/engine.md
2025-01-24 15:31:30 +08:00

5.1 KiB
Raw Blame History

order, title, type, label
order title type label
0 引擎 核心 Core

Engine 在扮演着总控制器的角色,主要包含了画布渲染控制引擎子系统管理等功能:

  • 画布:主画布相关的操作,如修改画布宽高等。
  • 渲染控制 控制渲染的执行/暂停/继续、垂直同步等功能。
  • 引擎子系统管理 场景管理资源管理物理系统交互系统XR 系统
  • 执行环境的上下文管理:控制 WebGL 等执行环境的上下文管理。

初始化

为了方便用户直接创建 web 端 engine我们提供了 WebGLEngine,支持 WebGL1.0 和 WebGL2.0。

const engine = await WebGLEngine.create({
  canvas: "canvas-id",
  colorSpace: {...},
  graphicDeviceOptions: {...}
  gltf: {...},
  ktx2Loader: {...}                                   
});

下方是创建引擎时传入配置的类型说明:

配置 解释
canvas 可以是画布 ID string 或画布对象(`HTMLCanvasElement
graphicDeviceOptions 图形设备相关配置,比如 webGLMode 可以用 控制 WebGL1/2。除 webGLMode 外的属性将透传给上下文,详情可参考 getContext 参数释义
colorSpace 颜色空间, ColorSpace.GammaColorSpace.Linear
gltf gltf Loader 配置,workerCount 用来配置 meshOpt 的 worker 数量:{ meshOpt: { workerCount: number } }
ktx2Loader KTX2 Loader 配置,workerCount 用来配置 ktx2 解码器的worker 数量:{ priorityFormats: Array<KTX2TargetFormat>; transcoder: KTX2Transcoder; workerCount: number }。如果 workCount 大于 0将会创建 worker 线程,等于 0 则只用主线程。

更多相关配置信息,可参考物理系统交互系统XR 系统

属性

属性名称 属性释义
time 引擎时间相关信息,详情可参考时间
vSyncCount 垂直同步刷新率,引擎默认开启垂直同步且刷新率 vSyncCount1 (与屏幕刷新率保持一致)。若 vSyncCount 设置为2,则屏幕每刷新 2 帧,引擎更新 1 次。
resourceManager 资源管理器,一般通过它进行资产的加载释放
sceneManager 场景管理器。Galacean 支持多场景同时渲染,通过场景管理器可以方便地管理当前场景的增删改查,详情可参考场景
inputManager 交互管理器,一般通过它获取键盘,触控与滚轮信息,详情可参考交互

刷新率

默认情况下引擎采用垂直同步模式并使用 vSyncCount 控制渲染刷新率,该模式才渲染帧会等待屏幕的垂直同步信号, vSyncCount 代表了渲染帧之间期望的屏幕同步信号次数,默认值为 1该属性的值必须为整数例如我们想在一个屏幕刷新率为 60 帧的设备上期望每秒渲染 30 帧,则可以将该值设置为 2。

另外用户还可以关闭垂直同步,即将 vSyncCount 设置为 0然后设置 targetFrameRate 为期望的帧数值,该模式下的渲染不考虑垂直同步信号,而是,如 120 表示 120 帧,即每秒期望刷新 120 次。

// 垂直同步
engine.vSyncCount = 1;
engine.vSyncCount = 2;

// 非垂直同步
engine.vSyncCount = 0;
engine.targetFrameRate = 120;

⚠️ 不建议使用非垂直同步

方法

方法名称 方法释义
run 执行引擎渲染帧循环
pause 暂停引擎渲染帧循环
resume 恢复引擎渲渲染循环
destroy 销毁引擎