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
44
src/main.zig
44
src/main.zig
@ -521,13 +521,35 @@ pub const Window = struct {
|
||||
_ = xOffset;
|
||||
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 {
|
||||
if(severity == c.GL_DEBUG_SEVERITY_HIGH) { // TODO: Capture the stack traces.
|
||||
std.log.err("OpenGL {}:{s}", .{severity, message[0..@intCast(length)]});
|
||||
} else if(severity == c.GL_DEBUG_SEVERITY_MEDIUM) {
|
||||
std.log.warn("OpenGL {}:{s}", .{severity, message[0..@intCast(length)]});
|
||||
} else if(severity == c.GL_DEBUG_SEVERITY_LOW) {
|
||||
std.log.info("OpenGL {}:{s}", .{severity, message[0..@intCast(length)]});
|
||||
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 {
|
||||
const sourceString: []const u8 = switch (source) {
|
||||
c.GL_DEBUG_SOURCE_API => "API",
|
||||
c.GL_DEBUG_SOURCE_APPLICATION => "Application",
|
||||
c.GL_DEBUG_SOURCE_OTHER => "Other",
|
||||
c.GL_DEBUG_SOURCE_SHADER_COMPILER => "Shader Compiler",
|
||||
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,13 +619,11 @@ pub const Window = struct {
|
||||
}
|
||||
reloadSettings();
|
||||
|
||||
if(@import("builtin").mode == .Debug) {
|
||||
c.glEnable(c.GL_DEBUG_OUTPUT);
|
||||
c.glEnable(c.GL_DEBUG_OUTPUT_SYNCHRONOUS);
|
||||
c.glDebugMessageCallback(GLFWCallbacks.glDebugOutput, null);
|
||||
c.glDebugMessageControl(c.GL_DONT_CARE, c.GL_DONT_CARE, c.GL_DONT_CARE, 0, null, c.GL_TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
fn deinit() void {
|
||||
c.glfwDestroyWindow(window);
|
||||
@ -730,12 +750,6 @@ pub fn main() !void {
|
||||
}
|
||||
|
||||
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);
|
||||
Window.handleEvents();
|
||||
gui.windowlist.gpu_performance_measuring.startQuery(.screenbuffer_clear);
|
||||
|
Loading…
x
Reference in New Issue
Block a user