fix(windows): 全环境统一软件渲染——根治多机白屏(RDP/老显卡/驱动差异)

用户实测三台电脑(Win10×2/Win11×1)安装后白屏,远程与非远程均有;进程与
HTTP 服务完全健康(manifest 可访问、cmd 无报错)——纯渲染层失败。属于
Flutter Windows 引擎 GPU/ANGLE 渲染在真实环境的已知兼容性问题
(flutter/flutter#74856:RDP 会话 OpenGL 不可用白屏;老/虚拟显卡同理)。

方案:wWinMain 入口(引擎创建前)设置 FLUTTER_ENGINE_SWITCHES=
--enable-software-rendering,全部环境统一软件渲染。本应用为轻量状态页
(列表/卡片/图标),软件渲染性能无感;换来 RDP、老显卡、驱动缺失等
一切图形环境可用。此前 ANGLE_PLATFORM_BACKEND=d3d9 试验失败(Flutter
自带的 ANGLE 仅含 d3d11 后端),软件渲染是为该场景设计的官方开关。
This commit is contained in:
dzc committed 2026-09-21 19:18:56 +08:00
1 parent 98df601f7b
commit 1f0f5b4503
1 file changed
+6
+6
View File
@@ -7,6 +7,12 @@
int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
_In_ wchar_t *command_line, _In_ int show_command) {
// 统一软件渲染:Flutter 的 GPU/ANGLE 渲染在多种真实环境下初始化失败导致
// 白屏窗口(RDP 远程会话、老显卡/驱动、虚拟显卡——实测远程与非远程机器
// 均有白屏,而进程与 HTTP 服务本身健康)。本应用界面为轻量状态页,软件
// 渲染性能足够;引擎开关必须在引擎创建前经 FLUTTER_ENGINE_SWITCHES 注入。
SetEnvironmentVariable(L"FLUTTER_ENGINE_SWITCHES", L"--enable-software-rendering");
// Attach to console when present (e.g., 'flutter run') or create a
// new console when running with a debugger.
if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) {