Windows development SDK for Zig game developers.
- Lightweight partial bindings for:
- Win32 API (extends std.os.windows) + COM
- Direct3D 12 (+ SDK debug layers)
- Direct3D 11 (+ SDK debug layers, D3D11-on-12)
- Direct3D common + D3DCompiler
- DXGI
- DirectML
- Direct2D + DirectWrite
- Windows Imaging Component (WIC)
- XAudio2 (+ XAudio2fx, XAPO)
- WASAPI + Media Foundation
- XInput
Example build.zig
pub fn build(b: *std.Build) void {
...
const zwindows = b.dependency("zwindows", .{});
// Import the Windows API bindings
exe.root_module.addImport("zwindows", zwindows.module("zwindows"));
}const windows = @import("zwindows");
const dwrite = windows.dwrite;
const dxgi = windows.dxgi;
const d3d12 = windows.d3d12;
const d3d12d = windows.d3d12d;
const dml = windows.directml;
// etc
pub fn main() !void {
...
const winclass = windows.WNDCLASSEXA{
.style = 0,
.lpfnWndProc = processWindowMessage,
.cbClsExtra = 0,
.cbWndExtra = 0,
.hInstance = @as(windows.HINSTANCE, @ptrCast(windows.GetModuleHandleA(null))),
.hIcon = null,
.hCursor = windows.LoadCursorA(null, @as(windows.LPCSTR, @ptrFromInt(32512))),
.hbrBackground = null,
.lpszMenuName = null,
.lpszClassName = name,
.hIconSm = null,
};
_ = windows.RegisterClassExA(&winclass);
}Most of src/windows/** is generated from Microsoft's .winmd metadata (the same source
windows-rs uses), via the generator in
bindgen/. foundation.zig and strings.zig are hand-written and untouched by
regeneration.
Generated modules, re-exported from zwindows:
| Import | API | Source (src/windows/…) |
|---|---|---|
windows.d3d12, windows.d3d12d |
Direct3D 12 (+ debug layers) | graphics/direct3d12/{d3d12,d3d12sdklayers}.zig |
windows.d3d11, windows.d3d11d, windows.d3d11on12 |
Direct3D 11 (+ debug, 11-on-12) | graphics/direct3d11/{d3d11,d3d11sdklayers,d3d11on12}.zig |
windows.d3d, windows.d3dcompiler |
Direct3D common, compiler | graphics/direct3d/{d3dcommon,d3dcompiler}.zig |
windows.dxgi |
DXGI | graphics/dxgi/dxgi.zig |
windows.d2d1, windows.dwrite |
Direct2D, DirectWrite | graphics/{direct2d/d2d1,directwrite/dwrite}.zig |
windows.directml |
DirectML | graphics/directml/directml.zig |
windows.wic |
Windows Imaging Component | graphics/imaging/wincodec.zig |
windows.xaudio2, windows.xaudio2fx, windows.xapo |
XAudio2 family | media/audio/{xaudio2,xaudio2fx,xapo}.zig |
windows.wasapi |
WASAPI | media/audio/wasapi.zig |
windows.mf |
Media Foundation | media/mediafoundation/mf.zig |
windows.xinput |
XInput | ui/input/xinput.zig |
windows.com |
COM | system/com.zig |
Requires a Rust toolchain. To pull in newer metadata and regenerate:
git submodule update --remote windows-rs
./update.shThen review the diff (git diff -- src/windows) before committing. This is a manual,
maintainer-invoked step — zig build/zig build test never require Rust.