☰
OpenNOW HDR实战指南:Windows scRGB、macOS EDR与Linux Wayland色彩管理完整配置教程
2026/10/4 1:59:19 网站建设 项目流程

OpenNOW HDR实战指南:Windows scRGB、macOS EDR与Linux Wayland色彩管理完整配置教程

【免费下载链接】OpenNOWCustom GeForce Now Client Named OpenNOW项目地址: https://gitcode.com/gh_mirrors/op/OpenNOW

OpenNOW 是专为 GeForce NOW 打造的自定义客户端,其HDR 流媒体模式是跨平台高动态范围游戏串流的核心能力。本文带你完成 OpenNOW HDR 的完整配置:Windows scRGB 线性扩展输出、macOS EDR 扩展动态范围、以及 Linux Wayland 下基于 color-management-v1 协议的色彩管制(色彩管理),并附硬件验证清单,帮你一次点亮 HDR 串流。

一、先搞懂:OpenNOW 的 HDR 是怎么工作的?

OpenNOW 的 HDR 是一个可选(opt-in)串流模式,它与设置里的"色彩深度(Color depth)"相互独立——10-bit SDR 串流仍然是 SDR,只有同时满足以下 4 个条件,HDR 才会真正生效:

条件说明
1️⃣ 操作系统已开启 HDRWindows 显示设置 / macOS EDR / Wayland 合成器色彩管理
2️⃣ OpenNOW 串流设置中勾选 HDR见下文各平台配置
3️⃣ 远程游戏本身支持 HDR游戏内 HDR 选项打开
4️⃣ GeForce NOW 服务端允许会话协商后以服务端实际接受格式为准

官方文档对整条链路有权威描述,建议收藏:docs/hdr.md。

客户端内开启 HDR 的 3 步

  1. 打开设置 → 串流(Stream)页面,找到HDR 开关。它会显示当前输出状态(HdrOutput.status);若提示"HDR requires a supported 10-bit H.265 or AV1 hardware decoder",说明你的显卡还缺少所需的 10-bit 硬件解码能力;
  2. 确认编码器(Codec)选择Auto或H.265(Auto 优先 HEVC、必要时回退 AV1;H.264 与软解不支持 HDR,会直接报错而不是静默降级);
  3. 关闭帧生成(Frame generation 对 HDR 源自动禁用,HDR 帧保持原生节奏与精度),然后开启新会话——HDR 偏好对下一次会话生效,不会改写你已保存的 SDR 偏好。

相关设置界面源码:DesktopSettingsStreamPage.qml,HDR 开关的启用逻辑与解码器探测都在这里。

二、Windows HDR 配置:scRGB 优先,HDR10 兜底

解码链路:两条硬件路径都保住 PQ BT.2020

Windows 上的 HDR 解码有两条硬件路径,均由官方验证:

  • Media Foundation 硬件 HEVC/AV1 P010 解码 + D3D11 视频处理:全程保留 PQ BT.2020,输出为 10-bitRGB10A2纹理;
  • HEVC Y410 + 十位 UINT 着色器转换:针对特定 GPU 上视频处理器 8-bit 归一化偏移问题的精确补偿路径。

输出端:优先 scRGB 线性扩展范围

OpenNOW 在 Windows 上优先选择 Linear extended sRGB(scRGB)swapchain 格式;当窗口不支持时才回退到 HDR10 输出。两者的差异在于:

  • scRGB:线性空间直接合成,Qt 界面元素(菜单、统计面板)以线性白点混合,无额外 GPU 开销;
  • HDR10:需要一帧窗口尺寸的 RGBA16F 合成目标 + 一次 PQ 编码 pass,让半透明 UI 在线性光域混合,而不是平均 PQ 码值——视觉正确,但只在这条路径上多花一点带宽。

格式探测与切换逻辑在 HdrOutput.cpp:先探测HDRExtendedSrgbLinear,再探测HDR10,都不行才落到 SDR。

Windows 端操作清单

  1. 在 Windows 显示设置中打开 HDR(Dolby Vision 可关);
  2. 确认显卡驱动安装了对应硬件 MFT 解码器(NVIDIA 显卡建议开启"硬件解码 HEVC/AV1");
  3. OpenNOW 串流设置勾选 HDR,编码器选 Auto/H.265;
  4. 启动一个支持 HDR 的游戏(如 Cyberpunk 2077),确认游戏内 HDR 选项可用、高光超出 SDR 白点但黑位不上浮、色彩不发灰;
  5. 分别在窗口/全屏、F3 统计、菜单打开状态下检查文本亮度与半透明边缘。

三、macOS HDR 配置:EDR 扩展动态范围输出

macOS 走的是完全不同的管线,核心是Metal 扩展范围(extended-range / EDR)输出:

  • 解码:VideoToolbox 硬件 HEVC Main10,经过 PQ 解码校验后通过 IOSurface 转入 Metal,编码后的 PQ BT.2020 以RGBA16F浮点格式完整保留——不会先压成 8-bit 再升回来;
  • 输出:Metal 扩展范围输出层,实际呈现由当前显示器的 EDR headroom和 Qt 的 display-referred 亮度契约共同决定;
  • 恢复:切回 SDR 时会显式重置输出层的色彩空间,避免残留 EDR 状态(见 HdrOutput.cpp 的 Metal SDR 恢复分支)。

平台编译配置在 PlatformHdr.cmake:macOS 下额外编译MetalHdrOutput.mm并链接 AppKit / QuartzCore 框架来读取 EDR 能力。

macOS 端操作清单

  1. 确认显示器支持 EDR(Apple 显示器或支持 EDR 的第三方 HDR 显示器);
  2. 串流设置勾选 HDR,编码器 Auto(HEVC 优先);
  3. 验证高光能否突破 100% 白点、黑色层次不受损;
  4. 在 HDR 与 SDR 会话间来回切换,确认色彩空间正确复位、无灰蒙。

四、Linux Wayland 色彩管制:color-management-v1 全链路

Linux 是三个平台中"色彩管制"最严格的一个——OpenNOW 刻意在以下情况保持 SDR,绝不误报 HDR:

  • ❌ X11 桌面(不做任何 HDR 假设);
  • ❌ 多屏配置(要求单屏 Wayland 桌面);
  • ❌ 合成器缺少 color-management-v1 支持,或仅有 ICC 描述、元数据不完整/含糊的输出;
  • ❌ 仅靠 Vulkan 声明的 HDR 格式或合成器的 preferred-image 提示(这不足以证明输出当前处于 HDR)。

完整链路拆解

  1. 协议探测:OpenNOW 内置了 Waylandcolor-management-v1协议定义(color-management-v1.xml),构建时若检测到wayland-client库与wayland-scanner,就用它生成客户端代码并启用 HDR 输出观察(PlatformHdr.cmake),否则降级为 SDR 探测关闭;
  2. 输出描述读取:WaylandHdrOutput.cpp 要求输出侧提供完整的 PQ 描述—— primaries(BT.2020 基色)、PQ 传递函数、亮度上限与目标 headroom 全部齐备(参考白点默认 203 nits,见 WaylandHdrOutput.h),任何一项缺失或歧义都判为 SDR;
  3. 解码:Vulkan Video 设备解码协商好的 10-bit 档(HEVC Main10 / AV1 10-bit),或 FFmpeg VAAPI + P010 DMA-BUF 导入;
  4. 呈现:Vulkan surface 暴露 scRGB 或 HDR10 格式,PQ/HLG BT.2020 内容以RGBA16F保留,由 Qt 完成最终的传递函数与色域转换。

Linux 输出检测还会随输出变化主动失效(切屏、拔插显示器、合成器 HDR 开关),不完整的协议回复会有限重试而不是复用过期缓存。

Linux 端操作清单

  1. 使用单屏 Wayland 桌面(KDE Plasma 6.x 或 GNOME 48+ 等已支持 color-management-v1 的合成器);
  2. 在合成器侧开启显示器 HDR;
  3. 显式选择Vulkan 后端 + H.265 8-bit 4:2:0先做基础验证,再升级到 10-bit 与 HDR;
  4. 完整验收流程参考 docs/linux-vulkan-acceptance.md,重点检查诊断日志中不能出现 CPU 帧下载、软解回退或跨设备导入回退。

五、硬件验收:7 步确认你的 HDR 真的亮了

自动化的着色器与原生测试无法证明你的 HDR 显示器光学输出正确,必须用打包好的正式构建(不要用新外壳 + 旧原生运行时的混搭组合)实测。验收步骤浓缩自 docs/hdr.md 的 Hardware acceptance 章节:

步骤验证内容
1开启 OS HDR,确认 OpenNOW 报告可用 HDR 输出;HDR 游戏 + Auto 编码器,检查游戏内 HDR 控件生效、高光超 SDR 白
2分别指定 HEVC 与 AV1 复测;确认 H.264 或软解覆盖会产生显式错误而非伪 HDR 串流
3窗口/全屏、缩放、DPI 变化下打开 F3 统计与退出确认,检查文本亮度与半透明边缘
4在活动串流上跨 HDR/SDR 显示器移动、开关 OS HDR,验证 SDR 色调映射与 HDR 恢复且无需重启会话
5结束会话后以相反的 HDR 设置重开,测试重连/恢复,新会话格式必须胜出旧帧纹理
6Linux 下 Vulkan Video 与 VAAPI 分开测试,诊断里检查显式导入/解码失败
7HEVC + 10-bit 4:4:4 + HDR:确认保留十位 4:4:4 与 PQ BT.2020,饱和色与高光正常

💡报告问题时的模板:系统/合成器、GPU 与驱动、显示器型号、HDR 设置、编码器/后端、窗口模式,以及故障发生在启动、解码、呈现还是显示切换阶段。不要泄露账户 token 或会话凭据。

六、常见问题速查

症状原因与对策
HDR 开关灰色不可点缺少 10-bit H.265/AV1 硬件解码,或 OS 未开启 HDR;检查HdrOutput.supported与解码器探测状态
开了 HDR 却是 H.264H.264 不支持 HDR,会在会话分配前显式报错;改选 Auto 或 H.265
Linux 下 HDR 选项不出现X11 / 多屏 / 合成器缺 color-management-v1 / 输出元数据不完整;OpenNOW 宁缺毋滥,保持 SDR
帧生成没生效预期行为:HDR 源自动禁用帧生成,不往流里插 SDR 生成的帧
8-bit SDR 输出出现噪点10-bit 源降到 8-bit 输出时的有序抖动(ordered dithering),属正常色彩转换行为
会话恢复后颜色模式错乱以服务端实际接受的格式为准;若旧帧纹理残留请重启会话

关键文件索引:HDR 总文档 docs/hdr.md · Linux Vulkan 验收 docs/linux-vulkan-acceptance.md · 输出状态机 HdrOutput.cpp · Wayland 色彩管制 WaylandHdrOutput.cpp · 协议定义 opennow-qt/protocols/

按本文完成配置后,你的 OpenNOW 串流将在 Windows 上以 scRGB 线性扩展范围、macOS 上以 EDR 浮点格式、Linux 上以 Wayland 色彩管制的全精度链路呈现 HDR 内容——高光更亮、暗部更深、色彩更准。🎮

【免费下载链接】OpenNOWCustom GeForce Now Client Named OpenNOW项目地址: https://gitcode.com/gh_mirrors/op/OpenNOW

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询