Files
engine/docs/zh/core/engine.md
2024-08-05 15:47:23 +08:00

5.3 KiB
Raw Blame History

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

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

初始化

为了方便用户直接创建 web 端 engineGalacean 提供了 WebGLEngine :

const engine = await WebGLEngine.create({ canvas: "canvas" });

WebGLEngine 支持 WebGL1.0 和 WebGL2.0,它能够控制画布的一切行为,此外还有资源管理、场景管理、执行/暂停/继续、垂直同步等功能。WebGLEngine.create 。下方是创建引擎时传入配置的类型说明:

---
title: WebGLEngineConfiguration Interface
---
classDiagram
    EngineConfiguration <|-- WebGLEngineConfiguration
    class EngineConfiguration {
       <<interface>>
       +IPhysics physics
       +IXRDevice xrDevice
       +ColorSpace colorSpace
       +IShaderLab shaderLab
       +IInputOptions input
    }

    class WebGLEngineConfiguration{
        <<interface>>
        +HTMLCanvasElement | OffscreenCanvas | string canvas
        +WebGLGraphicDeviceOptions graphicDeviceOptions
    }

编辑器导出的项目通常自动设置了编辑器配置的相关选项,比如开发者可以在 导出界面 设置上下文的渲染配置:

又或者在编辑器的项目设置界面选择物理后端与 XR 后端:

您也可以修改代码变更引擎配置,拿画布透明来举例,引擎默认是将画布的透明通道开启的,即画布会和背后的网页元素混合,如果需要关闭透明,可以这样设置:

const engine = await WebGLEngine.create({
  canvas: htmlCanvas,
  graphicDeviceOptions: { alpha: false }
});

类似的,可以用 webGLMode 控制 WebGL1/2webGLMode 外的属性将透传给上下文,详情可参考 getContext 参数释义

更多相关配置信息,可参考物理系统交互系统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 销毁引擎