Windows
Windows gets a Win32 plugin over the same renderer core, speaking the same
channel with the same method names, so OrblitView and every other Dart
caller works there unchanged. CMake runs the setup when Flutter configures the
build, through bash, which is the one thing here Flutter doesn’t already ask
for.
What you need
Section titled “What you need”| Windows 10 or 11, on x64 | Not on Arm |
| Visual Studio 2022 or newer | With the “Desktop development with C++” workload, as flutter doctor asks for. The renderer is C++20 and builds with MSVC. CI compiles it with Visual Studio 2026, and 2022 hasn’t been tried |
| Git for Windows | For its bash, which has to be on PATH. See below |
| Developer Mode | Flutter needs it to link plugins. start ms-settings:developers opens the setting |
Bash on PATH
Section titled “Bash on PATH”The setup script is bash, and CMake looks for bash on PATH. If it finds
none, the build stops with:
No bash on PATH. packages/orblit_filament/windows/setup.sh stages theFilament release and compiles the materials, and needs the bash thatGit for Windows installs.Git for Windows does install a bash, in C:\Program Files\Git\bin. As far as
we know, its installer’s default PATH option only adds Git\cmd, which has
git and no bash. So a machine where git works can still hit that error.
For the current PowerShell session:
$env:Path = "C:\Program Files\Git\bin;$env:Path"where.exe bashTo keep it, add the same folder to Path under “Edit the system environment
variables”.
where.exe bash should list Git’s first. If the first one is
C:\Windows\System32\bash.exe, that’s WSL’s launcher, and it would run the
setup inside Linux, where it doesn’t belong. Nobody has seen what happens then,
so put Git’s folder ahead of it.
CMake remembers the bash it found. If it has already found the wrong one, run
flutter clean after fixing PATH.
Running it
Section titled “Running it”flutter run -d windowsThe first configure is the slow one. It downloads Filament’s Windows release,
about 810 MB, and compiles the materials for Vulkan and OpenGL with the
release’s own matc.exe.
At runtime the renderer asks for Vulkan first, through vulkan-1.dll, and
falls back to OpenGL through opengl32.dll. It only falls back when
vulkan-1.dll is missing or building Filament’s engine throws. On CI’s runner
the DLL loads, then Filament panics creating the Vulkan instance on its own
driver thread, where nothing can catch it, so OpenGL is never tried.
Each frame is copied into a
flutter::PixelBufferTexture on its way to Flutter. The copy-free route is
reported to crash under Impeller, and nobody has been able to check that on a
real machine, so the copy stays until someone can.
x64 only
Section titled “x64 only”Google publishes Filament’s Windows release for x64 and nothing else, so
there’s nothing to link an arm64 build against. On Windows on Arm, Flutter
builds for arm64, and the plugin stops at configure time with a message saying
to build with --target-platform windows-x64. That advice is wrong for now:
flutter build windows has no such flag in Flutter 3.47, because it builds for
whatever machine it’s on. So Windows on Arm can’t build Orblit’s renderer yet.
