cyberegoorg/zbgfx
When zig meets bgfx.
Zig api.
Compile as standard zig library.
shaderc as build artifact.
Shader compile in build.zig to *.bin.h.
Shader compile in build.zig and embed as zig module. (this is zig equivalent of *.bin.h)
Shader compile from runtime via shaderc as child process.
Binding for DebugDraw API
imgui render backend. Use build option imgui_include to enable. ex. for
zgui: .imgui_include = zgui.path("libs").getPath(b),
Zig based allocator.
IMPORTANT
This is only zig binding. For BGFX stuff goto bgfx.
WARNING
shadercneed some time to compile.
NOTE
- If you build shaders/app and see something like
run shaderc (shader.bin.h) stderr. This is not "true" error (build success), but only in debug build shader print some stuff to stderr and zig build catch it.
Folders libs, shaders is copy&paste from bgfx for more sell-contained
experience and is licensed by LICENSEE
Zig binding is licensed by WTFPL
Minimal is 0.15.1. But you know try your version and believe.
Copy zbgfx to a subdirectory of your project and then add the following to your build.zig.zon .dependencies:
.zbgfx = .{ .path = "path/to/zbgfx" },
or use zig fetch --save ... way.
Then in your build.zig add:
pub fn build(b: *std.Build) void {
const exe = b.addExecutable(.{ ... });
const zbgfx = b.dependency("zbgfx", .{});
exe.root_module.addImport("zbgfx", zbgfx.module("zbgfx"));
exe.linkLibrary(zbgfx.artifact("bgfx"));
// This install shaderc to install dir
// For shader build in build =D check examples
// b.installArtifact(zbgfx.artifact("shaderc"));
}
See examples for binding usage and bgfx for bgfx stuff.
| Build option | Default | Description |
|---|---|---|
imgui_include |
null |
Path to ImGui includes (need for imgui bgfx backend) |
multithread |
true |
Compile with BGFX_CONFIG_MULTITHREADED |
with_shaderc |
true |
Compile with shaderc |
Run this for build all examples:
cd examples
zig build
Minimal setup with GLFW for window and input.
examples/zig-out/bin/00-minimal
| Key | Description |
|---|---|
v |
Vsync on/off |
d |
Debug on/off |
Minimal setup for zgui/ImGui.
examples/zig-out/bin/01-zgui
| Key | Description |
|---|---|
v |
Vsync on/off |
d |
Debug on/off |
Basic usage of shader compile in runtime.
Try edit shaders in zig-out/bin/shaders and hit r to recompile.
examples/zig-out/bin/02-runtime-shaderc
| Key | Description |
|---|---|
v |
Vsync on/off |
d |
Debug on/off |
r |
Recompile shaders form file |
DebugDraw api usage example.
examples/zig-out/bin/03-debugdraw
| Key | Description |
|---|---|
v |
Vsync on/off |
d |
Debug on/off |