自适应分辨率

最近更新时间:2024-02-01 21:47:31

我的收藏
本节主要介绍云端应用如何支持自适应分辨率。当业务需要适配不同用户客户端的分辨率,实现画面全屏无黑边时,可以使用自适应分辨率的能力。

时序图





步骤说明

推荐方式

1. 前置条件:
1.1 在上传应用至云渲染平台前,将应用设置为无边框全屏模式并开启自适应桌面分辨率
注意:
这步操作需要在应用层面完成。
UE 应用可以参考下面一段蓝图加到 Map 的 BeginPlay 里面开启自适应桌面分辨率。其中 In Fullscreen Mode 应该配置为 Windowed Fullscreen(窗口化全屏)。



Unity 应用可以参考下图配置为全屏模式。



或者增加应用启动参数 -screen-fullscreen 1,Unity 应用参数参考 文档



有些应用可以在设置中调整显示模式,将调整后生成的配置文件一同打包上传至控制台即可。



应用独占全屏不属于无边框模式。云渲染的自适应分辨率功能是通过修改云端桌面分辨率来实现的。然而,应用独占全屏时,显示器分辨率是由应用控制的,此时强行修改桌面分辨率可能导致应用崩溃。
如何区分无边框全屏和独占全屏?无边框全屏应用按 Alt+Tab 切换窗口不会导致显示器闪烁,独占全屏应用切换会有闪烁的现象。
1.2 在控制台进行 应用配置 时,将画面捕捉模式设置为捕捉整个桌面。
2. 业务客户端调用 TCGSDK.start() 接口启动云渲染应用,SDK 完成应用连接后会触发回调 onConnectSuccess(),建议业务客户端在这之后设置分辨率。
3. 业务客户端调用 TCGSDK.getPageSize() 或者其他方式获取客户端分辨率。
4. 业务客户端调用 TCGSDK.setRemoteDesktopResolution() 接口设置云端分辨率。
5. 云端并发实例收到设置分辨率请求后,会自动修改云端桌面分辨率,云端应用根据桌面分辨率变化自适应修改。
6. 业务客户端可以在回调 onRemoteScreenResolutionChange() 接口中获取分辨率设置是否生效。

若应用仅为非全屏窗口,如何适配不同用户客户端的分辨率?(不推荐)

如您的应用只有非全屏窗口模式,无法调整为无边框全屏模式,可以在控制台 应用配置 中将画面捕捉模式设置为仅捕捉应用窗口。您需要 根据文档指引,填写正确的应用窗口名称和类名。当开发过程中未自定义窗口标题时,Demo.exe 启动后的窗口名称一般为 Demo;如您的应用是 UE 应用,类名一般为 UnrealWindow。
后续步骤:
1. 业务客户端调用 TCGSDK.start() 接口启动云渲染应用,SDK 完成应用连接后会触发回调 onConnectSuccess(),建议业务客户端在这之后设置分辨率。
2. 业务客户端调用 TCGSDK.getPageSize() 或者其他方式获取客户端分辨率。
3. 业务客户端通过 数据通道 或其他自定义方式通知云端应用修改分辨率。
4. 云端应用收到设置分辨率请求后,修改自身分辨率。(该逻辑需要应用本身支持)
5. 由于应用分辨率在变化,为避免应用分辨率超过云端桌面分辨率所导致的画面不全、部分画面无法响应等问题,需要确保云端桌面分辨率始终大于应用分辨率。为此,您可以:
方式一:在控制台项目配置 > 高级配置中,将云端桌面默认分辨率调整到足够的大小,如2500x2500。
方式二:同步调用 TCGSDK.setRemoteDesktopResolution() 接口修改云端桌面分辨率。业务客户端可以在回调 onRemoteScreenResolutionChange() 接口中获取桌面分辨率设置是否生效。
注意:
以上方式较为复杂,若配置不当可能导致画面不全、部分画面无法响应、客户端画面分辨率失常等问题,因此建议您选择 推荐方式,将应用设置为无边框全屏模式并开启自适应桌面分辨率。