核心

引擎

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
gltfgltf Loader 配置,workerCount 用来配置 meshOpt 的 worker 数量:{ meshOpt: { workerCount: number } }
ktx2LoaderKTX2 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销毁引擎

这篇文档对您有帮助吗?