Squashed 'vendor/zglfw/' content from commit f04fdbf
git-subtree-dir: vendor/zglfw git-subtree-split: f04fdbfc5b6d8c9a12025013992ac1d48653931e
This commit is contained in:
87
README.md
Normal file
87
README.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# [zglfw](https://github.com/zig-gamedev/zglfw)
|
||||
|
||||
Zig build package and bindings for [GLFW 3.4](https://github.com/glfw/glfw/releases/tag/3.4)
|
||||
|
||||
## Getting started
|
||||
|
||||
Example `build.zig`:
|
||||
```zig
|
||||
const std = @import("std");
|
||||
|
||||
pub fn build(b: *std.Build) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
|
||||
const exe = b.addExecutable(.{ ... });
|
||||
|
||||
const zglfw = b.dependency("zglfw", .{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
exe.root_module.addImport("zglfw", zglfw.module("root"));
|
||||
|
||||
if (target.result.os.tag != .emscripten) {
|
||||
exe.root_module.linkLibrary(zglfw.artifact("glfw"));
|
||||
}
|
||||
|
||||
b.installArtifact(exe);
|
||||
}
|
||||
```
|
||||
|
||||
Now in your code you may import and use `zglfw`:
|
||||
```zig
|
||||
const glfw = @import("zglfw");
|
||||
|
||||
pub fn main() !void {
|
||||
try glfw.init();
|
||||
defer glfw.terminate();
|
||||
|
||||
const window = try glfw.createWindow(600, 600, "zig-gamedev: minimal_glfw_gl", null, null);
|
||||
defer glfw.destroyWindow(window);
|
||||
|
||||
// or, using the equivalent, encapsulated, "objecty" API:
|
||||
const window = try glfw.Window.create(600, 600, "zig-gamedev: minimal_glfw_gl", null, null);
|
||||
defer window.destroy();
|
||||
|
||||
// setup your graphics context here
|
||||
|
||||
while (!window.shouldClose()) {
|
||||
glfw.pollEvents();
|
||||
|
||||
// render your things here
|
||||
|
||||
window.swapBuffers();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
See [zig-gamedev samples](https://github.com/zig-gamedev/zig-gamedev/tree/main/samples) for more complete usage examples.
|
||||
|
||||
|
||||
## Usage with Vulkan
|
||||
|
||||
To match types from `zglfw` functions and Vulkan library `import_vulkan` option may be used. When using this option `vulkan` import must be provided to the root module.
|
||||
|
||||
Example `build.zig` with [`vulkan-zig`](https://github.com/Snektron/vulkan-zig):
|
||||
|
||||
```zig
|
||||
const vulkan_headers = b.dependency("vulkan_headers", .{});
|
||||
const vulkan = b.dependency("vulkan", .{
|
||||
.registry = vulkan_headers.path("registry/vk.xml"),
|
||||
}).module("vulkan-zig");
|
||||
exe.root_module.addImport("vulkan", vulkan);
|
||||
|
||||
const zglfw = b.dependency("zglfw", .{
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.import_vulkan = true,
|
||||
});
|
||||
|
||||
const zglfw_mod = zglfw.module("root");
|
||||
zglfw_mod.addImport("vulkan", vulkan);
|
||||
exe.root_module.addImport("zglfw", zglfw_mod);
|
||||
|
||||
if (target.result.os.tag != .emscripten) {
|
||||
exe.root_module.linkLibrary(zglfw.artifact("glfw"));
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user