|
Deki 0.19.0
面向嵌入式显示屏和桌面的模块化 C++ 2D 引擎
|
一个项目可以在任何屏幕上运行。每台设备都以其原生分辨率渲染,由相机决定显示多大范围的世界。
| 设置 | 作用 |
|---|---|
| 正交高度 | 相机从上到下显示多大范围的世界,单位为米。宽度随屏幕的形状而定。在像素模式下,检视器会按你设置的每米像素数显示它:16 px/m 时 11.25 m 显示为 180 px。 |
| 像素完美 | 只按整数倍缩放,并将相机和所有绘制内容吸附到美术像素网格。用于像素画。 |
| 投影 | 正交(平面,用于 2D)或透视(垂直方向的视野,用于 3D 网格)。 |
形状相同的更大屏幕显示相同的世界范围,只是画得更大。更宽的屏幕在两侧显示更多内容;更窄的屏幕则显示更少。要拉近,请减小正交高度。
每米像素数(项目设置 > 单位)表示美术资源的密度:在 16 px/m 时,一个 16 px 的精灵宽一米。
正交高度为 11.25 m 的相机:
| 屏幕 | 显示的范围 |
|---|---|
| 1280x720 (16:9) | 20 x 11.25 m |
| 1920x1080 (16:9) | 20 x 11.25 m,以 1.5x 绘制 |
| 320x240 (4:3) | 15 x 11.25 m:16:9 视图的两侧被裁掉 |
| 2560x1080 (21:9) | 26.7 x 11.25 m:两侧显示更多 |
| 240x320 (竖屏) | 8.4 x 11.25 m |
将重要的内容放在你所面向的最窄屏幕之内,并在其外侧为更宽的屏幕多构建一些世界,否则玩家会在那里看到相机的清除颜色。
HUD 属于屏幕,而不属于世界:左上角的红心、右上角的分数。为对象添加屏幕锚点,并在其网格中选择一个点:一个角、一条边的中点或中心。它的偏移是与该点之间的距离,单位为米,Y 轴向上,因此距左边 0.875 m、向下 1 m 的红心就是“左上”,偏移为 (0.875, -1)。
之后,该对象在每种屏幕上、在相机移动时,都会停留在那个点上。它和其他所有东西一样以米为单位确定大小,因此会随相机缩放:在 320x240 和 536x240 的屏幕上大小相同,在 720p 上则占三倍的像素。
2D 像素画。 将正交高度设为美术资源的原生高度:例如,16 px/m 下的 240 px 对应 15 m。开启像素完美。640x480 的屏幕将每个美术像素绘制为 2x2,1280x720 为 3x3,400x300 则以 1x 绘制并多显示一点世界。像素完美向下取整,因此相机显示的范围会比正交高度略多,而不会裁掉任何部分;小于 1x 的屏幕会被裁剪。
2D 高分辨率或矢量美术。 将正交高度设为主屏幕应显示的范围,将每米像素数设为美术资源的密度。每种屏幕都会平滑缩放。渲染器使用最近邻采样,因此缩小很多的美术资源(1280 到 320)在移动时会闪烁:请按接近最小屏幕的尺寸制作。
带 3D 网格的 2D。 与 2D 相同,只是将相机的投影设为透视。视野与正交高度一样是垂直方向的,因此网格和精灵在每种屏幕上都能对齐。精灵仍按平面绘制;在 3D 中放置精灵是下一步的工作。
3D。 将相机设为透视并设置其视野。与正交高度一样,它是垂直方向的:更宽的屏幕在两侧看到更多内容。
运行视图的工具栏用于选择要查看的屏幕,就像 Unity 的 Game 视图一样:
旁边是该屏幕的像素格式。运行时使用这个尺寸和格式。运行期间可以更改尺寸,就像设备的屏幕变了一样;格式则在停止之前保持不变。场景视图中的相机小工具会勾勒出该屏幕所看到的范围;没有相机时,场景视图会在原点周围绘制该屏幕。运行视图会按项目记住这一选择。
DekiEditor --render-scenes 以活动平台的屏幕尺寸和 RGB565 进行渲染;DEKI_RENDER_SIZE=WxH 可渲染其他尺寸,DEKI_RENDER_FORMAT 可渲染其他格式。--export --platform <id> 可为活动平台以外的目标导出。
每种屏幕还有自己的像素格式:大多数小型面板上是 RGB565,桌面上是全彩。由此带来两点。
平台的 colorFormat 是其屏幕的格式。编辑器自身的缓存跟随活动平台,因此场景视图中显示的就是该目标得到的结果。运行视图的格式下拉列表可以预览其他格式;图像在绘制时进行转换,因此任何格式都能在任何屏幕上绘制。
3D 模型在其 .data 文件中使用相同的格式和最大大小设置,并能绘制到每种帧缓冲格式中。模型的纹理以 2 的幂存储,因此最大大小会对其设置上限;为“无”时上限为 256,这是小型开发板能够常驻内存的大小。
帧缓冲区使用显示屏自身的尺寸和格式,在显示屏启动时读取。同一个构建可以在不同尺寸的屏幕上运行。平台的 screenWidth、screenHeight 和 colorFormat 是编辑器预览时使用的值,也是桌面模拟器打开窗口时使用的值。