瀏覽代碼

REVIEWED: GetWindowScaleDPI() #1086

Ray 4 年之前
父節點
當前提交
60d874caf8
共有 1 個文件被更改,包括 23 次插入4 次删除
  1. 23 4
      src/core.c

+ 23 - 4
src/core.c

@@ -1352,10 +1352,29 @@ Vector2 GetWindowScaleDPI(void)
     Vector2 scale = { 1.0f, 1.0f };
     
 #if defined(PLATFORM_DESKTOP)
-    GLFWmonitor *monitor = glfwGetPrimaryMonitor();
+    float xdpi = 1.0;
+    float ydpi = 1.0;
+    Vector2 windowPos = GetWindowPosition();
+    
+    int monitorCount = 0;
+    GLFWmonitor **monitors = glfwGetMonitors(&monitorCount);
 
-    if (monitor != NULL) glfwGetMonitorContentScale(monitor, &scale.x, &scale.y);
-    else TRACELOG(LOG_WARNING, "GLFW: Failed to get primary monitor");
+    // Check window monitor
+    for (int i = 0; i < monitorCount; i++)
+    {
+        glfwGetMonitorContentScale(monitors[i], &xdpi, &ydpi);
+        
+        int xpos, ypos, width, height;
+        glfwGetMonitorWorkarea(monitors[i], &xpos, &ypos, &width, &height);
+        
+        if ((windowPos.x >= xpos) && (windowPos.x < xpos + width) && 
+            (windowPos.y >= ypos) && (windowPos.y < ypos + height)) 
+        {
+            scale.x = xdpi;
+            scale.y = ydpi;
+            break;
+        }
+    }
 #endif
 
     return scale;
@@ -1626,7 +1645,7 @@ void BeginTextureMode(RenderTexture2D target)
 {
     rlglDraw();                         // Draw Buffers (Only OpenGL 3+ and ES2)
 
-    rlEnableFramebuffer(target.id);   // Enable render target
+    rlEnableFramebuffer(target.id);     // Enable render target
 
     // Set viewport to framebuffer size
     rlViewport(0, 0, target.texture.width, target.texture.height);