From 885a8652cb8a433a18811d90048d11c1ec67b60e Mon Sep 17 00:00:00 2001 From: s-ol Date: Sun, 26 Jan 2020 20:49:25 +0100 Subject: break OSC in favor of uniform caching --- src/debug_gl.zig | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src/debug_gl.zig') diff --git a/src/debug_gl.zig b/src/debug_gl.zig index 2fdcda0..ebb552f 100644 --- a/src/debug_gl.zig +++ b/src/debug_gl.zig @@ -6,11 +6,27 @@ const builtin = @import("builtin"); pub const is_on = if (builtin.mode == builtin.Mode.ReleaseFast) c.GL_FALSE else c.GL_TRUE; +fn glDebugMessage(source: c.GLenum, typ: c.GLenum, id: c.GLuint, severity: c.GLenum, length: c.GLsizei, _message: [*c]const u8, user: ?*const c_void) callconv(.C) void { + const message = _message[0..@intCast(usize, length)]; + std.debug.warn("GL Callback [{}] {} / {}: {s}\n", .{ source, typ, severity, message }); +} + +pub fn init() void { + if (is_on == c.GL_TRUE) { + c.glEnable(c.GL_DEBUG_OUTPUT); + c.glDebugMessageCallback(glDebugMessage, null); + } +} + pub fn assertNoError() void { - if (builtin.mode != builtin.Mode.ReleaseFast) { - const err = c.glGetError(); - if (err != c.GL_NO_ERROR) { + if (is_on == c.GL_TRUE) { + var err = c.glGetError(); + while (err != c.GL_NO_ERROR) : (err = c.glGetError()) { panic("GL error: {}\n", .{err}); + } else { + return; } + + panic("GL Errors encountered.\n", .{err}); } } -- cgit v1.2.3