|
@@ -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);
|