mirror of
https://github.com/galacean/engine.git
synced 2026-05-23 10:22:11 +08:00
5.1 KiB
5.1 KiB
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.Gamma 或 ColorSpace.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 则只用主线程。 |
属性
| 属性名称 | 属性释义 |
|---|---|
| time | 引擎时间相关信息,详情可参考时间 |
| vSyncCount | 垂直同步刷新率,引擎默认开启垂直同步且刷新率 vSyncCount 为1 (与屏幕刷新率保持一致)。若 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 | 销毁引擎 |