aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.zig
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-01-26 19:49:25 +0000
committers-ol <s-ol@users.noreply.github.com>2020-01-26 19:49:25 +0000
commit885a8652cb8a433a18811d90048d11c1ec67b60e (patch)
tree52b845a825c91ec878983eb1078b4bd48f27ec73 /src/main.zig
parentremove offset default uniform (diff)
downloadglsl-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.zig22
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 {