mirror of
https://github.com/PixelGuys/Cubyz.git
synced 2025-08-03 19:28:49 -04:00
Improve OpenGL debug output and print it in release as well.
This commit is contained in:
parent
2b30454042
commit
bfb6466f7e
52
src/main.zig
52
src/main.zig
@ -521,13 +521,35 @@ pub const Window = struct {
|
|||||||
_ = xOffset;
|
_ = xOffset;
|
||||||
scrollOffset += @floatCast(yOffset);
|
scrollOffset += @floatCast(yOffset);
|
||||||
}
|
}
|
||||||
fn glDebugOutput(_: c_uint, _: c_uint, _: c_uint, severity: c_uint, length: c_int, message: [*c]const u8, _: ?*const anyopaque) callconv(.C) void {
|
fn glDebugOutput(source: c_uint, typ: c_uint, _: c_uint, severity: c_uint, length: c_int, message: [*c]const u8, _: ?*const anyopaque) callconv(.C) void {
|
||||||
if(severity == c.GL_DEBUG_SEVERITY_HIGH) { // TODO: Capture the stack traces.
|
const sourceString: []const u8 = switch (source) {
|
||||||
std.log.err("OpenGL {}:{s}", .{severity, message[0..@intCast(length)]});
|
c.GL_DEBUG_SOURCE_API => "API",
|
||||||
} else if(severity == c.GL_DEBUG_SEVERITY_MEDIUM) {
|
c.GL_DEBUG_SOURCE_APPLICATION => "Application",
|
||||||
std.log.warn("OpenGL {}:{s}", .{severity, message[0..@intCast(length)]});
|
c.GL_DEBUG_SOURCE_OTHER => "Other",
|
||||||
} else if(severity == c.GL_DEBUG_SEVERITY_LOW) {
|
c.GL_DEBUG_SOURCE_SHADER_COMPILER => "Shader Compiler",
|
||||||
std.log.info("OpenGL {}:{s}", .{severity, message[0..@intCast(length)]});
|
c.GL_DEBUG_SOURCE_THIRD_PARTY => "Third Party",
|
||||||
|
c.GL_DEBUG_SOURCE_WINDOW_SYSTEM => "Window System",
|
||||||
|
else => "Unknown",
|
||||||
|
};
|
||||||
|
const typeString: []const u8 = switch (typ) {
|
||||||
|
c.GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR => "deprecated behavior",
|
||||||
|
c.GL_DEBUG_TYPE_ERROR => "error",
|
||||||
|
c.GL_DEBUG_TYPE_MARKER => "marker",
|
||||||
|
c.GL_DEBUG_TYPE_OTHER => "other",
|
||||||
|
c.GL_DEBUG_TYPE_PERFORMANCE => "performance",
|
||||||
|
c.GL_DEBUG_TYPE_POP_GROUP => "pop group",
|
||||||
|
c.GL_DEBUG_TYPE_PORTABILITY => "portability",
|
||||||
|
c.GL_DEBUG_TYPE_PUSH_GROUP => "push group",
|
||||||
|
c.GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR => "undefined behavior",
|
||||||
|
else => "unknown",
|
||||||
|
};
|
||||||
|
switch (severity) {
|
||||||
|
c.GL_DEBUG_SEVERITY_HIGH => {
|
||||||
|
std.log.err("OpenGL {s} {s}: {s}", .{sourceString, typeString, message[0..@intCast(length)]});
|
||||||
|
},
|
||||||
|
else => {
|
||||||
|
std.log.warn("OpenGL {s} {s}: {s}", .{sourceString, typeString, message[0..@intCast(length)]});
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -597,12 +619,10 @@ pub const Window = struct {
|
|||||||
}
|
}
|
||||||
reloadSettings();
|
reloadSettings();
|
||||||
|
|
||||||
if(@import("builtin").mode == .Debug) {
|
c.glEnable(c.GL_DEBUG_OUTPUT);
|
||||||
c.glEnable(c.GL_DEBUG_OUTPUT);
|
c.glEnable(c.GL_DEBUG_OUTPUT_SYNCHRONOUS);
|
||||||
c.glEnable(c.GL_DEBUG_OUTPUT_SYNCHRONOUS);
|
c.glDebugMessageCallback(GLFWCallbacks.glDebugOutput, null);
|
||||||
c.glDebugMessageCallback(GLFWCallbacks.glDebugOutput, null);
|
c.glDebugMessageControl(c.GL_DONT_CARE, c.GL_DONT_CARE, c.GL_DONT_CARE, 0, null, c.GL_TRUE);
|
||||||
c.glDebugMessageControl(c.GL_DONT_CARE, c.GL_DONT_CARE, c.GL_DONT_CARE, 0, null, c.GL_TRUE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deinit() void {
|
fn deinit() void {
|
||||||
@ -730,12 +750,6 @@ pub fn main() !void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
while(c.glfwWindowShouldClose(Window.window) == 0) {
|
while(c.glfwWindowShouldClose(Window.window) == 0) {
|
||||||
{ // Check opengl errors:
|
|
||||||
const err = c.glGetError();
|
|
||||||
if(err != 0) {
|
|
||||||
std.log.err("Got opengl error: {}", .{err});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
c.glfwSwapBuffers(Window.window);
|
c.glfwSwapBuffers(Window.window);
|
||||||
Window.handleEvents();
|
Window.handleEvents();
|
||||||
gui.windowlist.gpu_performance_measuring.startQuery(.screenbuffer_clear);
|
gui.windowlist.gpu_performance_measuring.startQuery(.screenbuffer_clear);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user