diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2020-01-26 19:49:25 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2020-01-26 19:49:25 +0000 |
| commit | 885a8652cb8a433a18811d90048d11c1ec67b60e (patch) | |
| tree | 52b845a825c91ec878983eb1078b4bd48f27ec73 /src/main.zig | |
| parent | remove offset default uniform (diff) | |
| download | glsl-view-885a8652cb8a433a18811d90048d11c1ec67b60e.tar.gz glsl-view-885a8652cb8a433a18811d90048d11c1ec67b60e.zip | |
break OSC in favor of uniform caching
Diffstat (limited to 'src/main.zig')
| -rw-r--r-- | src/main.zig | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/main.zig b/src/main.zig index 0530024..37104da 100644 --- a/src/main.zig +++ b/src/main.zig @@ -51,7 +51,7 @@ pub fn main() !void { c.glfwMakeContextCurrent(window); c.glfwSwapInterval(1); - var constants = try gl.Constants.create(window); + var constants = try gl.Constants.create(window, &config); defer constants.destroy(); var outputs = try std.ArrayList(*out.Output).initCapacity(&arena.allocator, config.outputs.len); @@ -67,13 +67,12 @@ pub fn main() !void { c.glClearColor(0.0, 0.0, 0.0, 1.0); debug_gl.assertNoError(); + debug_gl.init(); const start_time = c.glfwGetTime(); var prev_time = start_time; - constants.normalizedQuad.bind(0); - - debug_gl.assertNoError(); + constants.normalized_quad.bind(0); var main_program = try gl.ShaderProgram.create( \\#version 330 core @@ -101,12 +100,17 @@ pub fn main() !void { var last_stat = try shader_file.stat(); try reloadShader(&main_program, shader_file, last_stat.size); + var cache = gl.UniformCache.init(std.heap.c_allocator, &main_program); + defer cache.deinit(); + var fbo = try gl.FramebufferObject.create(config.width, config.height); defer fbo.destroy(); const control = try ctrl.ControlServer.init(&arena.allocator, config.osc); defer control.destroy(); + _ = try cache.get("radius\x00"); + while (c.glfwWindowShouldClose(window) == c.GL_FALSE) { c.glfwMakeContextCurrent(window); c.glClear(c.GL_COLOR_BUFFER_BIT); @@ -118,16 +122,22 @@ pub fn main() !void { const stat = try shader_file.stat(); if (stat.mtime > last_stat.mtime) { try reloadShader(&main_program, shader_file, stat.size); + try cache.refresh(); last_stat = stat; } + if (try cache.get("offset\x00")) |offset| { + offset.value.FLOAT += 0.01; + offset.setShaderValue(main_program); + } + control.update(main_program); fbo.bind(); c.glClear(c.GL_COLOR_BUFFER_BIT); main_program.bind(); - constants.normalizedQuad.draw(); + constants.normalized_quad.draw(); fbo.unbind(); for (outputs.toSlice()) |output, i| { @@ -144,8 +154,6 @@ pub fn main() !void { c.glfwPollEvents(); } - - debug_gl.assertNoError(); } fn reloadShader(current: *gl.ShaderProgram, frag_file: fs.File, size: u64) !void { |
