When zig meets bgfx.
- C 63%
- C++ 32.8%
- Zig 2.6%
- Shell 1%
- Objective-C 0.4%
Reviewed-on: #1 Co-authored-by: Ondra Voves <[email protected]> Co-committed-by: Ondra Voves <[email protected]> |
||
|---|---|---|
| .github/workflows | ||
| examples | ||
| includes | ||
| libs | ||
| shaders | ||
| src | ||
| tools | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| AUTHORS.md | ||
| build.zig | ||
| build.zig.zon | ||
| LICENSE | ||
| README.md | ||
ZBgfx
Features
- Zig api.
- Compile as standard zig library.
shadercas build artifact.- Shader compile in
build.zigto*.bin.h. - Shader compile in
build.zigand embed as zig module. (this is zig equivalent of*.bin.h) - Shader compile from runtime via
shadercas child process. - Binding for DebugDraw API
imguirender backend. Use build optionimgui_includeto enable. ex. for zgui:.imgui_include = zgui.path("libs").getPath(b),- Zig based allocator.
Important
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.
License
Folders libs, shaders is copy&paste from bgfx for more sell-contained
experience and is licensed by LICENSEE
Zig binding is licensed by WTFPL
Zig version
Minimal is 0.15.1. But you know try your version and believe.
Bgfx version
Getting started
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"));
}
Usage
See examples for binding usage and bgfx for bgfx stuff.
Build options
| 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 |
Examples
Run this for build all examples:
cd examples
zig build
00-Minimal
Minimal setup with GLFW for window and input.
examples/zig-out/bin/00-minimal
| Key | Description |
|---|---|
v |
Vsync on/off |
d |
Debug on/off |
01-ZGui
Minimal setup for zgui/ImGui.
examples/zig-out/bin/01-zgui
| Key | Description |
|---|---|
v |
Vsync on/off |
d |
Debug on/off |
02-Runtime shaderc
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 |
03-debugdraw
DebugDraw api usage example.
examples/zig-out/bin/03-debugdraw
| Key | Description |
|---|---|
v |
Vsync on/off |
d |
Debug on/off |