From df1c09235fe878b6212db08adf3122a2e01a3ce3 Mon Sep 17 00:00:00 2001 From: Serhii Rieznik Date: Mon, 23 Apr 2018 20:56:47 +0300 Subject: [PATCH 1/2] Enable DPI awareness on Windows platform --- base/vulkanexamplebase.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp index f12e533a..dd7a9c42 100644 --- a/base/vulkanexamplebase.cpp +++ b/base/vulkanexamplebase.cpp @@ -761,6 +761,8 @@ VulkanExampleBase::VulkanExampleBase(bool enableValidation) { setupConsole("Vulkan validation output"); } + + SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_SYSTEM_AWARE); #endif } From 5f5f29fa682148a55427ef6d6cdb4ec84593c4da Mon Sep 17 00:00:00 2001 From: Serhii Rieznik Date: Mon, 23 Apr 2018 21:28:35 +0300 Subject: [PATCH 2/2] More correct way to enabled DPI awareness --- base/vulkanexamplebase.cpp | 22 ++++++++++++++++++++-- base/vulkanexamplebase.h | 2 ++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp index dd7a9c42..9fc7dd09 100644 --- a/base/vulkanexamplebase.cpp +++ b/base/vulkanexamplebase.cpp @@ -761,8 +761,7 @@ VulkanExampleBase::VulkanExampleBase(bool enableValidation) { setupConsole("Vulkan validation output"); } - - SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_SYSTEM_AWARE); + setupDPIAwareness(); #endif } @@ -1004,6 +1003,25 @@ void VulkanExampleBase::setupConsole(std::string title) SetConsoleTitle(TEXT(title.c_str())); } +void VulkanExampleBase::setupDPIAwareness() +{ + using SetProcessDpiAwarenessFunc = HRESULT(*)(PROCESS_DPI_AWARENESS); + + HMODULE shCore = LoadLibraryA("Shcore.dll"); + if (shCore) + { + SetProcessDpiAwarenessFunc setProcessDpiAwareness = + (SetProcessDpiAwarenessFunc)GetProcAddress(shCore, "SetProcessDpiAwareness"); + + if (setProcessDpiAwareness != nullptr) + { + setProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE); + } + + FreeLibrary(shCore); + } +} + HWND VulkanExampleBase::setupWindow(HINSTANCE hinstance, WNDPROC wndproc) { this->windowInstance = hinstance; diff --git a/base/vulkanexamplebase.h b/base/vulkanexamplebase.h index 5680fb74..547dd58d 100644 --- a/base/vulkanexamplebase.h +++ b/base/vulkanexamplebase.h @@ -13,6 +13,7 @@ #include #include #include +#include #elif defined(VK_USE_PLATFORM_ANDROID_KHR) #include #include @@ -254,6 +255,7 @@ public: #if defined(_WIN32) void setupConsole(std::string title); + void setupDPIAwareness(); HWND setupWindow(HINSTANCE hinstance, WNDPROC wndproc); void handleMessages(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); #elif defined(VK_USE_PLATFORM_ANDROID_KHR)