Skip to content

Latest commit

 

History

History
60 lines (39 loc) · 3.04 KB

engine.md

File metadata and controls

60 lines (39 loc) · 3.04 KB

引擎

Engine 在 Oasis 引擎中扮演着总控制器的角色,他能够控制画布(支持跨平台)的一切行为,包括资源管理场景管理、执行/暂停/继续、垂直同步等功能。

初始化

初始化 Engine 需要提供 CanvasHardwareRenderer :

Canvas

Oasis 引擎包装了不同平台的画布,如 WebCanvas 支持用 Engine 控制 HTMLCanvasElement 或者 OffscreenCanvas 。如何进行 Canvas 的屏幕适配请看这里TODO。

HardwareRenderer

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 继续