Skip to content

初始化引擎

创建 Engine3D 实例

在使用引擎前,需要通过 Engine3D.init() 方法进行初始化。init() 是一个异步方法,返回一个 Engine3D 实例,后续的渲染、资源加载、配置等操作都通过这个实例进行。

ts
import { Engine3D } from '@orillusion/core';

Engine3D.init().then((engine) => {
  // engine 即为创建好的引擎实例
});

TIP

Engine3D.init() 是一个异步 API,推荐配合 async/await 进行调用

ts
import { Engine3D } from '@orillusion/core';

async function demo(){
  const engine = await Engine3D.init();
  // 通过 engine 进行后续操作
}
demo();

多实例

从新版本起,引擎支持多实例:可以多次调用 Engine3D.init() 创建多个相互独立的 Engine3D,每个实例拥有自己的画布、渲染循环、资源管理器(engine.res)和配置(engine.setting)。早期版本中通过 Engine3D.xxx 静态方式访问的接口(如 Engine3D.startRenderViewEngine3D.resEngine3D.aspectEngine3D.setting)现在都改为在实例上调用(engine.startRenderViewengine.res …)。

手动创建 Canvas

默认参数下,Engine3D.init() 会自动生成一个以屏幕大小为宽高的 canvas 画布。如果不想使用引擎自动创建的画布,用户也可以手动创建画布。 比如,用户可以在 HTML 中插入一个 <canvas> 标签,并指定一个 id:

html
<canvas id="canvas" style="width:800px;height:500px" />

TIP

使用外部画布需要手动设定 style 大小,比如具体的像素数值,或设置为 100% 来自动占满父级容器

接下来,在 ts 代码中通过 document.getElementById 获取到该画布:

ts
let canvas = document.getElementById('canvas');

并使用 canvasConfigcanvas 参数传入 init() 方法中进行初始化:

ts
import { Engine3D } from '@orillusion/core';

let canvas = document.getElementById('canvas');
const engine = await Engine3D.init({
  canvasConfig: { canvas }
});

更多配置请参看 Engine3D