Engine 在 Oasis 引擎中扮演着总控制器的角色,他能够控制画布(支持跨平台)的一切行为,包括资源管理、场景管理、执行/暂停/继续、垂直同步等功能。
初始化 Engine 需要提供 Canvas 和 HardwareRenderer :
Oasis 引擎包装了不同平台的画布,如 WebCanvas 支持用 Engine 控制 HTMLCanvasElement 或者 OffscreenCanvas 。如何进行 Canvas 的屏幕适配请看这里TODO。
Oasis 引擎封装了硬件渲染层,将不同平台的渲染能力统一管理,还可以通过 HardwareRenderer 的构造函数,传入支持的配置来控制不同平台的渲染能力。
const canvas = document.getElementById("canvas");
const webCanvas = new WebCanvas(canvas);
const webGLRenderer = new WebGLRenderer();
const engine = new Engine(webCanvas,webGLRenderer);
为了方便用户直接创建 web 端 engine,Oasis 提供了 WebGLEngine :
const engine = new WebGLEngine("canvas")
属性名称 | 属性释义 |
---|---|
vSyncCount | 引擎默认开启垂直同步且刷新率 vSyncCount 为1 ,即与屏幕刷新率保持一致。如果 vSyncCount 设置为2 ,则每刷新 2 帧,引擎更新一次。 |
resourceManager | 资源管理 |
sceneManager | 场景管理。Engine 是总控制器,Scene 作为场景单元,可以方便大型场景的实体管理;Camera 作为组件挂载在 Scene 中的某一实体下,和现实中的摄像机一样,可以选择拍摄 Scene 中的任何实体 ,最后渲染到屏幕上的一块区域或者离屏渲染。 |
如果用户使用 Oasis Engine 制作 FPS 等高速游戏,可能会遇到画面撕裂,碰撞检测不精确等结果,这是因为 Engine 的刷新速度跟不上屏幕刷新速度。用户可以关闭垂直同步,即将 vSyncCount 设置为 0,然后设置 targetFrameRate 为期望的帧数值,如 120 表示 120 帧,即每秒刷新 120 次。
// 垂直同步
engine.vSyncCount = 1;
engine.vSyncCount = 2;
// 非垂直同步
engine.vSyncCount = 0;
engine.targetFrameRate = 120;
属性名称 | 属性释义 |
---|---|
run | 执行 |
pause | 暂停 |
resume | 继续 |