summaryrefslogtreecommitdiffstats
path: root/src/main.zig
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2019-10-18 14:26:20 +0000
committers-ol <s-ol@users.noreply.github.com>2019-10-18 14:26:32 +0000
commitf9bd966065755233e9bed0cf79ff4a45fa052521 (patch)
treea8dcd6dcc4ba38a04240ae5b27ccb69468b8e904 /src/main.zig
downloadzig-imgui-f9bd966065755233e9bed0cf79ff4a45fa052521.tar.gz
zig-imgui-f9bd966065755233e9bed0cf79ff4a45fa052521.zip
initial commit
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig
new file mode 100644
index 0000000..42fa152
--- /dev/null
+++ b/src/main.zig
@@ -0,0 +1,77 @@
+const c = @import("c.zig");
+const std = @import("std");
+const panic = std.debug.panic;
+const glfw_impl = @import("glfw_impl.zig");
+
+extern fn errorCallback(err: c_int, description: [*c]const u8) void {
+ panic("Error: {}\n", description);
+}
+
+var window: *c.GLFWwindow = undefined;
+
+pub fn main() void {
+ _ = c.glfwSetErrorCallback(errorCallback);
+
+ if (c.glfwInit() == c.GL_FALSE) {
+ panic("GLFW init failure\n");
+ }
+ defer c.glfwTerminate();
+
+ c.glfwWindowHint(c.GLFW_CONTEXT_VERSION_MAJOR, 3);
+ c.glfwWindowHint(c.GLFW_CONTEXT_VERSION_MINOR, 2);
+ c.glfwWindowHint(c.GLFW_OPENGL_FORWARD_COMPAT, c.GL_TRUE);
+ c.glfwWindowHint(c.GLFW_OPENGL_PROFILE, c.GLFW_OPENGL_CORE_PROFILE);
+
+ // c.glfwWindowHint(c.GLFW_OPENGL_DEBUG_CONTEXT, debug_gl.is_on);
+ // c.glfwWindowHint(c.GLFW_DEPTH_BITS, 0);
+ // c.glfwWindowHint(c.GLFW_STENCIL_BITS, 8);
+ c.glfwWindowHint(c.GLFW_RESIZABLE, c.GL_TRUE);
+
+ const window_width = 640;
+ const window_height = 480;
+ window = c.glfwCreateWindow(window_width, window_height, c"ImGUI Test", null, null) orelse {
+ panic("unable to create window\n");
+ };
+ defer c.glfwDestroyWindow(window);
+
+ c.glfwMakeContextCurrent(window);
+ c.glfwSwapInterval(1);
+
+ const context = c.igCreateContext(null);
+ defer c.igDestroyContext(context);
+
+ const io = c.igGetIO();
+ io.*.ConfigFlags |= @enumToInt(c.ImGuiConfigFlags_NavEnableKeyboard);
+ io.*.ConfigFlags |= @enumToInt(c.ImGuiConfigFlags_DockingEnable);
+ io.*.ConfigFlags |= @enumToInt(c.ImGuiConfigFlags_ViewportsEnable);
+
+ const style = c.igGetStyle();
+ c.igStyleColorsDark(style);
+
+ if (io.*.ConfigFlags & @enumToInt(c.ImGuiConfigFlags_ViewportsEnable) != 0) {
+ style.*.WindowRounding = 0.0;
+ style.*.Colors[@enumToInt(c.ImGuiCol_WindowBg)].w = 1.0;
+ }
+
+ glfw_impl.Init(window, true, glfw_impl.ClientApi.OpenGL);
+ // ImGui_InitForOpenGL(window, true);
+ // ImGui_ImplOpenGL3_Init(glsl_version);
+
+ const start_time = c.glfwGetTime();
+ var prev_time = start_time;
+
+ while (c.glfwWindowShouldClose(window) == c.GL_FALSE) {
+ // c.glClear(c.GL_COLOR_BUFFER_BIT | c.GL_DEPTH_BUFFER_BIT | c.GL_STENCIL_BUFFER_BIT);
+
+ const now_time = c.glfwGetTime();
+ const elapsed = now_time - prev_time;
+ prev_time = now_time;
+
+ // nextFrame(t, elapsed);
+
+ // draw(t, @This());
+ c.glfwSwapBuffers(window);
+
+ c.glfwPollEvents();
+ }
+}