diff --git a/src/duckstation-qt/d3d11displaywindow.cpp b/src/duckstation-qt/d3d11displaywindow.cpp index 12ec266c9..b7a8ad2f8 100644 --- a/src/duckstation-qt/d3d11displaywindow.cpp +++ b/src/duckstation-qt/d3d11displaywindow.cpp @@ -445,8 +445,9 @@ void D3D11DisplayWindow::renderDisplay() const float uniforms[4] = {static_cast(m_display_offset_x) / static_cast(m_display_texture_width), static_cast(m_display_offset_y) / static_cast(m_display_texture_height), - static_cast(m_display_width) / static_cast(m_display_texture_width), - static_cast(m_display_height) / static_cast(m_display_texture_height)}; + (static_cast(m_display_width) - 0.5f) / static_cast(m_display_texture_width), + (static_cast(m_display_height) - 0.5f) / + static_cast(m_display_texture_height)}; const auto map = m_display_uniform_buffer.Map(m_context.Get(), sizeof(uniforms), sizeof(uniforms)); std::memcpy(map.pointer, uniforms, sizeof(uniforms)); m_display_uniform_buffer.Unmap(m_context.Get(), sizeof(uniforms)); diff --git a/src/duckstation-qt/opengldisplaywindow.cpp b/src/duckstation-qt/opengldisplaywindow.cpp index bd376a0e5..e1a412ad4 100644 --- a/src/duckstation-qt/opengldisplaywindow.cpp +++ b/src/duckstation-qt/opengldisplaywindow.cpp @@ -459,10 +459,11 @@ void OpenGLDisplayWindow::renderDisplay() glDisable(GL_SCISSOR_TEST); glDepthMask(GL_FALSE); m_display_program.Bind(); - m_display_program.Uniform4f(0, static_cast(m_display_offset_x) / static_cast(m_display_texture_width), - static_cast(m_display_offset_y) / static_cast(m_display_texture_height), - static_cast(m_display_width) / static_cast(m_display_texture_width), - static_cast(m_display_height) / static_cast(m_display_texture_height)); + m_display_program.Uniform4f( + 0, static_cast(m_display_offset_x) / static_cast(m_display_texture_width), + static_cast(m_display_offset_y) / static_cast(m_display_texture_height), + (static_cast(m_display_width) - 0.5f) / static_cast(m_display_texture_width), + (static_cast(m_display_height) - 0.5f) / static_cast(m_display_texture_height)); glBindTexture(GL_TEXTURE_2D, static_cast(reinterpret_cast(m_display_texture_handle))); glBindSampler(0, m_display_linear_filtering ? m_display_linear_sampler : m_display_nearest_sampler); glBindVertexArray(m_display_vao); diff --git a/src/duckstation-sdl/d3d11_host_display.cpp b/src/duckstation-sdl/d3d11_host_display.cpp index d97a803d7..3398b9ed9 100644 --- a/src/duckstation-sdl/d3d11_host_display.cpp +++ b/src/duckstation-sdl/d3d11_host_display.cpp @@ -2,12 +2,12 @@ #include "common/assert.h" #include "common/d3d11/shader_compiler.h" #include "common/log.h" +#include "imgui_impl_sdl.h" #include #include #include #include #include -#include "imgui_impl_sdl.h" Log_SetChannel(D3D11HostDisplay); class D3D11HostDisplayTexture : public HostDisplayTexture @@ -411,8 +411,9 @@ void D3D11HostDisplay::RenderDisplay() const float uniforms[4] = {static_cast(m_display_offset_x) / static_cast(m_display_texture_width), static_cast(m_display_offset_y) / static_cast(m_display_texture_height), - static_cast(m_display_width) / static_cast(m_display_texture_width), - static_cast(m_display_height) / static_cast(m_display_texture_height)}; + (static_cast(m_display_width) - 0.5f) / static_cast(m_display_texture_width), + (static_cast(m_display_height) - 0.5f) / + static_cast(m_display_texture_height)}; const auto map = m_display_uniform_buffer.Map(m_context.Get(), sizeof(uniforms), sizeof(uniforms)); std::memcpy(map.pointer, uniforms, sizeof(uniforms)); m_display_uniform_buffer.Unmap(m_context.Get(), sizeof(uniforms)); diff --git a/src/duckstation-sdl/opengl_host_display.cpp b/src/duckstation-sdl/opengl_host_display.cpp index 41f7f072d..9075ea199 100644 --- a/src/duckstation-sdl/opengl_host_display.cpp +++ b/src/duckstation-sdl/opengl_host_display.cpp @@ -1,10 +1,10 @@ #include "opengl_host_display.h" #include "common/assert.h" #include "common/log.h" +#include "imgui_impl_sdl.h" #include #include #include -#include "imgui_impl_sdl.h" #include Log_SetChannel(OpenGLHostDisplay); @@ -366,10 +366,11 @@ void OpenGLHostDisplay::RenderDisplay() glDisable(GL_SCISSOR_TEST); glDepthMask(GL_FALSE); m_display_program.Bind(); - m_display_program.Uniform4f(0, static_cast(m_display_offset_x) / static_cast(m_display_texture_width), - static_cast(m_display_offset_y) / static_cast(m_display_texture_height), - static_cast(m_display_width) / static_cast(m_display_texture_width), - static_cast(m_display_height) / static_cast(m_display_texture_height)); + m_display_program.Uniform4f( + 0, static_cast(m_display_offset_x) / static_cast(m_display_texture_width), + static_cast(m_display_offset_y) / static_cast(m_display_texture_height), + (static_cast(m_display_width) - 0.5f) / static_cast(m_display_texture_width), + (static_cast(m_display_height) - 0.5f) / static_cast(m_display_texture_height)); glBindTexture(GL_TEXTURE_2D, static_cast(reinterpret_cast(m_display_texture_handle))); glBindSampler(0, m_display_linear_filtering ? m_display_linear_sampler : m_display_nearest_sampler); glBindVertexArray(m_display_vao);