From 33157b2e2e1c6128e72f630e821485540879a712 Mon Sep 17 00:00:00 2001 From: hazeycode Date: Tue, 12 May 2026 02:49:22 +0100 Subject: [PATCH] backends newFrame shouldn't hardcode framebuffer scale to 1 --- src/backend_glfw_dx12.zig | 4 ++-- src/backend_glfw_opengl.zig | 4 ++-- src/backend_glfw_vulkan.zig | 7 ++----- src/backend_glfw_wgpu.zig | 4 ++-- src/backend_osx_metal.zig | 10 +++++----- src/backend_sdl2_opengl.zig | 4 ++-- src/backend_sdl2_renderer.zig | 9 ++++----- src/backend_sdl3_gpu.zig | 4 ++-- src/backend_sdl3_opengl.zig | 4 ++-- src/backend_sdl3_renderer.zig | 9 ++++----- src/backend_sdl3_vulkan.zig | 22 ++++++++-------------- src/backend_win32_dx12.zig | 4 ++-- 12 files changed, 37 insertions(+), 48 deletions(-) diff --git a/src/backend_glfw_dx12.zig b/src/backend_glfw_dx12.zig index c41480b..81e9b84 100644 --- a/src/backend_glfw_dx12.zig +++ b/src/backend_glfw_dx12.zig @@ -19,12 +19,12 @@ pub fn deinit() void { backend_glfw.deinit(); } -pub fn newFrame(fb_width: u32, fb_height: u32) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { backend_glfw.newFrame(); backend_dx12.newFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } diff --git a/src/backend_glfw_opengl.zig b/src/backend_glfw_opengl.zig index cb94dc3..061fbec 100644 --- a/src/backend_glfw_opengl.zig +++ b/src/backend_glfw_opengl.zig @@ -21,12 +21,12 @@ pub fn deinit() void { backend_glfw.deinit(); } -pub fn newFrame(fb_width: u32, fb_height: u32) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { backend_glfw.newFrame(); ImGui_ImplOpenGL3_NewFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } diff --git a/src/backend_glfw_vulkan.zig b/src/backend_glfw_vulkan.zig index d319e07..9f629a8 100644 --- a/src/backend_glfw_vulkan.zig +++ b/src/backend_glfw_vulkan.zig @@ -24,15 +24,12 @@ pub fn deinit() void { backend_glfw.deinit(); } -pub fn newFrame( - fb_width: u32, - fb_height: u32, -) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { backend_glfw.newFrame(); backend_vulkan.newFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } diff --git a/src/backend_glfw_wgpu.zig b/src/backend_glfw_wgpu.zig index e6fa517..06589ec 100644 --- a/src/backend_glfw_wgpu.zig +++ b/src/backend_glfw_wgpu.zig @@ -30,12 +30,12 @@ pub fn deinit() void { backend_glfw.deinit(); } -pub fn newFrame(fb_width: u32, fb_height: u32) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { ImGui_ImplWGPU_NewFrame(); backend_glfw.newFrame(); gui.io.setDisplaySize(@floatFromInt(fb_width), @floatFromInt(fb_height)); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } diff --git a/src/backend_osx_metal.zig b/src/backend_osx_metal.zig index ca95b1e..8396f75 100644 --- a/src/backend_osx_metal.zig +++ b/src/backend_osx_metal.zig @@ -19,14 +19,16 @@ pub fn deinit() void { pub fn newFrame( fb_width: u32, fb_height: u32, + fb_sx: f32, + fb_sy: f32, view: *const anyopaque, // NSView* - render_pass_descriptor: *const anyopaque // MTL::RenderPassDescriptor* + render_pass_descriptor: *const anyopaque, // MTL::RenderPassDescriptor* ) void { backend_osx.newFrame(view); ImGui_ImplMetal_NewFrame(render_pass_descriptor); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } @@ -43,6 +45,4 @@ pub fn draw( extern fn ImGui_ImplMetal_Init(device: *const anyopaque) bool; extern fn ImGui_ImplMetal_Shutdown() void; extern fn ImGui_ImplMetal_NewFrame(renderPassDescriptor: *const anyopaque) void; -extern fn ImGui_ImplMetal_RenderDrawData(draw_data: *const anyopaque, - commandBuffer: *const anyopaque, - commandEncoder: *const anyopaque) void; +extern fn ImGui_ImplMetal_RenderDrawData(draw_data: *const anyopaque, commandBuffer: *const anyopaque, commandEncoder: *const anyopaque) void; diff --git a/src/backend_sdl2_opengl.zig b/src/backend_sdl2_opengl.zig index cc228cd..2a12154 100644 --- a/src/backend_sdl2_opengl.zig +++ b/src/backend_sdl2_opengl.zig @@ -29,12 +29,12 @@ pub fn deinit() void { backend_sdl2.deinit(); } -pub fn newFrame(fb_width: u32, fb_height: u32) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { backend_sdl2.newFrame(); ImGui_ImplOpenGL3_NewFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } diff --git a/src/backend_sdl2_renderer.zig b/src/backend_sdl2_renderer.zig index d4a75ff..c81cc40 100644 --- a/src/backend_sdl2_renderer.zig +++ b/src/backend_sdl2_renderer.zig @@ -3,10 +3,10 @@ const backend_sdl2 = @import("backend_sdl2.zig"); pub fn init( window: *const anyopaque, // SDL_Window - renderer: *const anyopaque, // SDL_Renderer + renderer: *const anyopaque, // SDL_Renderer ) void { backend_sdl2.initRenderer(window, renderer); - if(!ImGui_ImplSDLRenderer2_Init(renderer)){ + if (!ImGui_ImplSDLRenderer2_Init(renderer)) { unreachable; } } @@ -22,12 +22,12 @@ pub fn deinit() void { backend_sdl2.deinit(); } -pub fn newFrame(fb_width: u32, fb_height: u32) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { ImGui_ImplSDLRenderer2_NewFrame(); backend_sdl2.newFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } @@ -48,4 +48,3 @@ extern fn ImGui_ImplSDLRenderer2_RenderDrawData(draw_data: gui.DrawData, rendere //TODO: extern fn ImGui_ImplSDLRenderer2_DestroyFontsTexture() void; //TODO: extern fn ImGui_ImplSDLRenderer2_CreateDeviceObjects() bool; //TODO: extern fn ImGui_ImplSDLRenderer2_DestroyDeviceObjects() void; - diff --git a/src/backend_sdl3_gpu.zig b/src/backend_sdl3_gpu.zig index 0628d77..e770c43 100644 --- a/src/backend_sdl3_gpu.zig +++ b/src/backend_sdl3_gpu.zig @@ -27,12 +27,12 @@ pub fn processEvent(event: *const anyopaque) bool { return backend_sdl3.processEvent(event); } -pub fn newFrame(fb_width: u32, fb_height: u32, fb_scale: f32) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { ImGui_ImplSDLGPU3_NewFrame(); backend_sdl3.newFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(fb_scale, fb_scale); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } diff --git a/src/backend_sdl3_opengl.zig b/src/backend_sdl3_opengl.zig index 11acdda..5008315 100644 --- a/src/backend_sdl3_opengl.zig +++ b/src/backend_sdl3_opengl.zig @@ -29,12 +29,12 @@ pub fn deinit() void { backend_sdl3.deinit(); } -pub fn newFrame(fb_width: u32, fb_height: u32) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { ImGui_ImplOpenGL3_NewFrame(); backend_sdl3.newFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } diff --git a/src/backend_sdl3_renderer.zig b/src/backend_sdl3_renderer.zig index 0ebb9c0..461f7ad 100644 --- a/src/backend_sdl3_renderer.zig +++ b/src/backend_sdl3_renderer.zig @@ -3,10 +3,10 @@ const backend_sdl3 = @import("backend_sdl3.zig"); pub fn init( window: *const anyopaque, // SDL_Window - renderer: *const anyopaque, // SDL_Renderer + renderer: *const anyopaque, // SDL_Renderer ) void { backend_sdl3.initRenderer(window, renderer); - if(!ImGui_ImplSDLRenderer3_Init(renderer)){ + if (!ImGui_ImplSDLRenderer3_Init(renderer)) { unreachable; } } @@ -22,12 +22,12 @@ pub fn deinit() void { backend_sdl3.deinit(); } -pub fn newFrame(fb_width: u32, fb_height: u32) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { ImGui_ImplSDLRenderer3_NewFrame(); backend_sdl3.newFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } @@ -48,4 +48,3 @@ extern fn ImGui_ImplSDLRenderer3_RenderDrawData(draw_data: gui.DrawData, rendere //TODO extern fn ImGui_ImplSDLRenderer3_DestroyFontsTexture() void; //TODO extern fn ImGui_ImplSDLRenderer3_CreateDeviceObjects() bool; //TODO extern fn ImGui_ImplSDLRenderer3_DestroyDeviceObjects() void; - diff --git a/src/backend_sdl3_vulkan.zig b/src/backend_sdl3_vulkan.zig index 413d813..95b71a3 100644 --- a/src/backend_sdl3_vulkan.zig +++ b/src/backend_sdl3_vulkan.zig @@ -6,11 +6,8 @@ pub const VkHandle = backend_vulkan.VkHandle; pub const VkPipelineRenderingCreateInfo = backend_vulkan.VkPipelineRenderingCreateInfo; pub const ImGui_ImplVulkan_InitInfo = backend_vulkan.ImGui_ImplVulkan_InitInfo; -pub fn init( - init_info: ImGui_ImplVulkan_InitInfo, - window: *const anyopaque - ) void { - backend_sdl3.initVulkan(window); +pub fn init(init_info: ImGui_ImplVulkan_InitInfo, window: *const anyopaque) void { + backend_sdl3.initVulkan(window); backend_vulkan.init(init_info); } @@ -19,15 +16,12 @@ pub fn deinit() void { backend_sdl3.deinit(); } -pub fn newFrame( - fb_width: u32, - fb_height: u32, -) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { backend_vulkan.newFrame(); backend_sdl3.newFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); } @@ -47,9 +41,9 @@ pub fn loadFunctions( loader: fn (function_name: [*:0]const u8, user_data: ?*anyopaque) callconv(.c) ?*anyopaque, user_data: ?*anyopaque, ) bool { - return backend_vulkan.loadFunctions(api_version, loader, user_data); -} + return backend_vulkan.loadFunctions(api_version, loader, user_data); +} -pub fn set_min_image_count(min_image_count: u32) void { +pub fn set_min_image_count(min_image_count: u32) void { backend_vulkan.set_min_image_count(min_image_count); -} \ No newline at end of file +} diff --git a/src/backend_win32_dx12.zig b/src/backend_win32_dx12.zig index a2e78a2..505d14f 100644 --- a/src/backend_win32_dx12.zig +++ b/src/backend_win32_dx12.zig @@ -20,12 +20,12 @@ pub fn deinit() void { ImGui_ImplWin32_Shutdown(); } -pub fn newFrame(fb_width: u32, fb_height: u32) void { +pub fn newFrame(fb_width: u32, fb_height: u32, fb_sx: f32, fb_sy: f32) void { ImGui_ImplWin32_NewFrame(); backend_dx12.newFrame(); gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height))); - gui.io.setDisplayFramebufferScale(1.0, 1.0); + gui.io.setDisplayFramebufferScale(fb_sx, fb_sy); gui.newFrame(); }