如何使用Madeira的FPS悬浮层:iOS模拟器性能实时监控好帮手
【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu + Wine + DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira
Madeira 是一个让 iPhone(非越狱)通过 FEX-Emu + Wine + DXMT 运行 x86-64 Windows PC 游戏的开源项目。它的FPS 悬浮层(FPS Overlay)是游戏画面上的实时监控面板:随时查看帧率、累计帧数、内存占用和刷新节奏,还能一键切换帧率上限、抓帧截图、调节功耗策略。对于新手来说,它是排查"游戏卡不卡、内存会不会爆"最直观的工具。
FPS 悬浮层在哪里:竖屏与横屏两种形态
启动游戏后,悬浮层会自动出现,无需额外设置:
| 界面形态 | 悬浮层位置 | 显示内容 |
|---|---|---|
| 📱 竖屏工具界面 | 游戏画面(Metal 视图)正上方 | 完整面板:内存 + Present + FPS + 各功能胶囊 |
| 📺 横屏游戏模式 | 右侧黑边栏(pillarbox) | 紧凑版:FPS + 节奏/抓帧/ECO/围栏胶囊纵向排列 |
两种形态都由同一个FPSOverlay视图驱动,分别挂载在 ContentView.swift(竖屏)和 ContentView.swift(横屏紧凑版)。横屏下因为游戏画面是窗口级视图、无法在其上覆盖任何内容,所以官方把读数"钉"在了右侧黑边里。
💡 想临时收起面板?点一下悬浮层即可隐藏,只留一个小圆点;再点一下就恢复。
悬浮层读数全解读:5 个数字各代表什么
以竖屏完整面板为例,从左到右依次是:
1️⃣ 内存占用(MB数值 + 颜色)
这是 iOS 的phys_footprint——系统判定是否"杀掉"你的应用的那个数。iOS 在本应用上以 4096 MB 为红线(Jetsam),一旦顶到就是瞬间闪退、日志里连一声再见都没有。颜色按剩余余量提示:
| 剩余空间 | 颜色 | 含义 |
|---|---|---|
| > 768 MB | 🟢 绿 | 安全 |
| > 384 MB | 🟡 黄 | 留意 |
| > 128 MB | 🟠 橙 | 紧张,考虑降画质 |
| ≤ 128 MB | 🔴 红 | 随时可能闪退 |
读数每 250 ms 刷新一次,实现见 FPSOverlay.swift。
2️⃣ Present(累计呈现代数)
DXMT 每向屏幕送一帧就加 1。它本身不直观,但配合 FPS 能判断"画面是卡住了还是只是慢"。
3️⃣ FPS(帧率 + 颜色)
按帧率高低着色:≥50 绿、≥30 黄、≥1 橙、低于 1 淡红。颜色规则很简单粗暴——一眼扫过去就知道这台 A15 现在跑得怎么样(实现见 FPSOverlay.swift)。
4️⃣ 节奏胶囊(60 / MAX(n) / RAW / 30)
这是最实用的部分,点一下就能切换游戏的帧率节奏,四种模式循环:
- 60:锁定 60 Hz,最省电、最稳;
- MAX(n):不锁帧,放到屏幕上限(ProMotion 机为 120,
n即当前上限); - RAW:游戏完全不节流(跳帧信箱模式),此时 FPS 读数就是"模拟栈的真实吞吐",适合测性能天花板;
- 30:锁 30 Hz,给发烫/掉电的机型留余量(仅当 DXMT 支持该上限时出现)。
切换循环逻辑见 FPSOverlay.swift。
5️⃣ 三个辅助胶囊:CAP / ECO / F(n)
- CAP:点一下抓取下一帧的全部渲染附件(存入
Documents/capture/),排查画面异常的神器,按下会青色闪烁提示已收到; - ECO:绿色亮起为开启。开启后把客制线程放到低优先级 QoS 类(能效核、低频),加载稍慢但把性能预算留给游戏本体——大场景加载时建议开,进游戏后关掉;
- F(n):GPU 围栏同步模式,用于原地 A/B 对比渲染行为(默认 F1,F0 为诊断用的"无围栏"上限,预期会有闪烁)。
数据是怎么算的:为什么读数又稳又省电
悬浮层背后是一套很克制的采样设计(FPSOverlay.swift):
- 后端每100 ms采样一次累计帧数,维护 5 秒环形缓冲(50 个样本);
- 显示值每250 ms刷新,采用自适应窗口:窗口至少包含 3 帧以上、且跨度 ≥1 秒才计算,所以 60 FPS 时窗口约 100 ms,而 1 FPS 的慢场景也有约 3 秒的稳定读数;
- 早期"固定 200 ms 窗口"会让 19 FPS 的慢场景显示成假的"20.0"整数锁帧,自适应窗口正是为解决这类误读而生。
简单说:你看到的数字既稳定、又不会因为采样太稀疏而抖动。
相关设置项:配合悬浮层做性能调优
悬浮层只是"仪表盘",真正的调优旋钮在配置里,可在 ConfigCatalog.generated.swift 查到完整定义:
| 配置项 | 作用 | 位置 |
|---|---|---|
env.MADEIRA_PROMOTE | 让屏幕保持最高刷新率(60 上限档位下也拉满 120Hz),更吃电,非默认 | ConfigCatalog |
fence-chain | D3D12 围栏链模式,与悬浮层 F(n) 胶囊联动 | ConfigCatalog |
eco/eco-qos | 省电调度开关及 QoS 等级选择 | ConfigCatalog |
ProMotion 促升逻辑的完整说明(为什么 60 上限下 20 ms 的管线会只显示 30 FPS)见 FPSOverlay.swift 的ProMotionIntent注释。
新手速查:遇到性能问题的 3 步排查
- 先看 FPS 颜色:黄/橙说明帧率不够 → 点节奏胶囊降到60或30,把帧率锁稳比追求高帧更流畅;
- 再看内存颜色:红/橙说明快碰 Jetsam 红线 → 进设置降游戏画质,或开启ECO缓解压力;
- 想留证据:按CAP抓一帧,把
Documents/capture/里的图和日志一起提交,排查效率翻倍。
项目整体背景与运行要求可参考 README.md。FPS 悬浮层把"看不见的性能"变成了屏幕上的一行彩色数字,是你在 iPhone 上玩转 Windows 游戏时最值得先学会使用的功能 🎮。
【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu + Wine + DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考