diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2019-10-18 14:26:20 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2019-10-18 14:26:32 +0000 |
| commit | f9bd966065755233e9bed0cf79ff4a45fa052521 (patch) | |
| tree | a8dcd6dcc4ba38a04240ae5b27ccb69468b8e904 /src/main.zig | |
| download | zig-imgui-f9bd966065755233e9bed0cf79ff4a45fa052521.tar.gz zig-imgui-f9bd966065755233e9bed0cf79ff4a45fa052521.zip | |
initial commit
Diffstat (limited to 'src/main.zig')
| -rw-r--r-- | src/main.zig | 77 |
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(); + } +} |
