|
Deki 0.20.2
面向嵌入式显示屏和桌面的模块化 C++ 2D 引擎
|
让开发板变快的大部分设置都会自动选择。本页说明哪些会自动选择、还剩什么需要设置,以及如何看懂数字。
开发板包(例如 deki-lilygo-boards)带有该开发板运行最好的设置。把开发板选为目标就会使用这些设置,无需调整。
| 开发板 | 所有演示场景 | 画面 |
|---|---|---|
| LilyGO T-Display S3 AMOLED | 59.6 fps(面板的刷新率) | 不撕裂(TE 线) |
| LilyGO T-Deck Plus | 60 fps | 不撕裂(面板的扫描线) |
本页其余内容适用于自己制作的开发板,或用于查明某个场景为什么慢。
这些都在游戏启动时由设备决定。启动日志中每一项各有一行,说明选了什么以及原因。
| 内容 | 如何选择 |
|---|---|
| 整帧还是条带 | 帧缓冲区能宽裕地放进内部 RAM 时用整帧,放不下时用条带。条带每次在内部 RAM 中绘制几行或几列,比在 PSRAM 中绘制整帧快得多。(渲染设置 frameMode) |
| 从另一个核心发送 | 在双核芯片上且有两份帧副本的内存时,绘制下一帧的同时发送当前帧;否则按绘制顺序发送。(asyncPresent,开) |
| 撕裂 | 接了 TE 线时(tePin),画面跟随面板的刷新信号。没有接时,改为回读面板的扫描线(scanlineSync,开)。无法回读的面板按绘制顺序发送,可能撕裂。 |
这些描述开发板的接线,设备无法自行得知。
| 设置 | 设为 |
|---|---|
| controller、busType 和引脚 | 开发板原理图上写的。 |
| spiWriteHz(parallelWriteHz) | 面板接受的最快时钟。大多数 ST7789 模块支持 80 MHz;并行总线上 20 MHz 比较稳妥。 |
| tePin | 面板 TE 输出所接的 GPIO(如果接了)。这是防止撕裂的最好方法。 |
| readsOnMosi | 面板在数据线上而不是 MISO 上应答时打开(T-Deck 就是这样)。只在没有 TE 线时有关。 |
| initSequence | 控制器默认的启动序列显示不对时(颜色发白、残留上一幅图像)所用的面板模块自己的启动序列。 |
| 设置 | 何时修改 |
|---|---|
| dirtyTileTracking | 屏幕大部分静止、且没有每帧都画满整个屏幕的东西时打开(全屏背景就会画满整个屏幕)。这样只发送变化的部分。 |
| bandRows | 条带的大小。条带越大,遍历场景的次数越少,但占用更多内部 RAM。40 适合大多数屏幕。 |
| frameMode | 保持自动,除非你在自己的开发板上测得另一种模式更快。 |
很少需要:usePsram 和 doubleBuffer(引擎绘制整帧的位置),以及 spiReadHz(T-Deck 的 ST7789 在 10 MHz 下读取可靠)。
串口上的 DEKI:STATS 或 device_stats 工具会输出一行:
DEKI:PROFILE 按组件和传输路径拆分绘制时间,用来找出场景中最耗时的那一项。
锁定在面板刷新率(59.6 到 60.3 Hz)的帧率,就是不撕裂的开发板能达到的最好结果:画面等待刷新,而不是撕裂。