Skip to content

createEngine() ​

创建完整、初始 stopped 的 Engine 3.0 组合根。

签名 ​

ts
function createEngine(options?: CreateEngineOptions): Engine;

选项 ​

名称 类型 默认值 说明
rendererOmit<WebGLRendererParameters, canvas | context | outputBufferType>—原生 renderer 参数;alpha 默认 true,antialias 默认 false,设备 identity 由 Engine 独占。
pixelRationumber | device | readonly [min, max]device固定 DPR、设备 DPR 或设备 DPR 静态保护区间;不根据运行时帧率自动切换。
pipelinePipelineOptions—内部 render targets 的 samples/stencil;samples 默认 0,与 Canvas antialias 独立。
pluginsreadonly Plugin[]—构造期静态安装并按 identity 去重。

最小用法 ​

ts
const engine = createEngine();

host.append(engine.canvas);
engine.start();

Engine 创建唯一 Canvas/WebGLRenderer、默认 World/View/Camera、Pipeline 与 Pointer。业务不能注入 Canvas/context,也不需要 mount API。

常用字段 ​

名称签名说明
canvasHTMLCanvasElementEngine 创建并终身持有的唯一 Canvas。
rendererWebGLRendererEngine 创建并直接暴露的原生 renderer。
world / worldsWorld / readonly World[]默认 World 与全部 live World 的只读投影。
camera / viewPerspectiveCamera / RenderView默认相机和默认全屏 View。
pipeline / pointerPipeline / Pointer渲染计划和鼠标事件控制面。
size / running / disposedreadonly state尺寸快照、帧循环与终态事实。

常用操作 ​

ts
const entity = engine.createEntity(object3D);
engine.world.root.add(entity);
engine.getEntity(object3D);

const world = engine.createWorld();
engine.destroyWorld(world);

engine.addSystem(System);
engine.setSystemEnabled(System, false);
engine.removeSystem(System);

engine.onEvent(Event, handler);
engine.emitEvent(Event, payload);

engine.start();
engine.stop();
engine.dispose();

所有权 ​

Engine dispose 会释放自己创建的设备、内部 Pipeline 资源、全部 World/Entity/Script/System,以及接纳 Entity 子树的标准 Three.js 资源;其中 userData.shared === true 的标准资源会保留。需要强制释放时,在终态前调用独立 disposeObject3D()。业务创建并借入的额外 Camera 和原生 Pass 由业务释放。

dispose 为同步终态 best-effort:单错原样抛出,多错形成 AggregateError,第二次调用不重试业务 callback。

相关 ​

基于 MIT 协议发布(内部使用)