summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorRay <[email protected]>2016-12-15 22:42:31 +0100
committerGitHub <[email protected]>2016-12-15 22:42:31 +0100
commit673ea62b2710f481775279d4844bca34c56d00c3 (patch)
tree9b5371581beeb89c30d5c33c003924ac1aa9afc1 /src
parentd5c0f9d3867887f86d754a031c7572ca76dcffd9 (diff)
parent06b8727d70b4eb4ca6d7a295d0702b6f322b89c3 (diff)
downloadraylib-673ea62b2710f481775279d4844bca34c56d00c3.tar.gz
raylib-673ea62b2710f481775279d4844bca34c56d00c3.zip
Merge pull request #206 from joeld42/jbd_bugfix
Added SetupViewport so high-DPI fix applies to EndTextureMode
Diffstat (limited to 'src')
-rw-r--r--src/core.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/src/core.c b/src/core.c
index 7fa20979..455417d2 100644
--- a/src/core.c
+++ b/src/core.c
@@ -264,6 +264,7 @@ static void SwapBuffers(void); // Copy back buffer to f
static void LogoAnimation(void); // Plays raylib logo appearing animation
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI)
static void TakeScreenshot(void); // Takes a screenshot and saves it in the same folder as executable
+static void SetupViewport(void);
#endif
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
@@ -744,8 +745,7 @@ void EndTextureMode(void)
rlDisableRenderTexture(); // Disable render target
// Set viewport to default framebuffer size (screen size)
- // TODO: consider possible viewport offsets
- rlViewport(0, 0, GetScreenWidth(), GetScreenHeight());
+ SetupViewport();
rlMatrixMode(RL_PROJECTION); // Switch to PROJECTION matrix
rlLoadIdentity(); // Reset current matrix (PROJECTION)
@@ -1776,19 +1776,8 @@ static void InitGraphicsDevice(int width, int height)
// NOTE: screenWidth and screenHeight not used, just stored as globals
rlglInit(screenWidth, screenHeight);
-#ifdef __APPLE__
- // Get framebuffer size of current window
- // NOTE: Required to handle HighDPI display correctly on OSX because framebuffer
- // is automatically reasized to adapt to new DPI.
- // When OS does that, it can be detected using GLFW3 callback: glfwSetFramebufferSizeCallback()
- int fbWidth, fbHeight;
- glfwGetFramebufferSize(window, &fbWidth, &fbHeight);
- rlViewport(renderOffsetX/2, renderOffsetY/2, fbWidth - renderOffsetX, fbHeight - renderOffsetY);
-#else
- // Initialize screen viewport (area of the screen that you will actually draw to)
- // NOTE: Viewport must be recalculated if screen is resized
- rlViewport(renderOffsetX/2, renderOffsetY/2, renderWidth - renderOffsetX, renderHeight - renderOffsetY);
-#endif
+ // Setup default viewport
+ SetupViewport();
// Initialize internal projection and modelview matrices
// NOTE: Default to orthographic projection mode with top-left corner at (0,0)
@@ -1805,6 +1794,23 @@ static void InitGraphicsDevice(int width, int height)
#endif
}
+static void SetupViewport(void)
+{
+#ifdef __APPLE__
+ // Get framebuffer size of current window
+ // NOTE: Required to handle HighDPI display correctly on OSX because framebuffer
+ // is automatically reasized to adapt to new DPI.
+ // When OS does that, it can be detected using GLFW3 callback: glfwSetFramebufferSizeCallback()
+ int fbWidth, fbHeight;
+ glfwGetFramebufferSize(window, &fbWidth, &fbHeight);
+ rlViewport(renderOffsetX/2, renderOffsetY/2, fbWidth - renderOffsetX, fbHeight - renderOffsetY);
+#else
+ // Initialize screen viewport (area of the screen that you will actually draw to)
+ // NOTE: Viewport must be recalculated if screen is resized
+ rlViewport(renderOffsetX/2, renderOffsetY/2, renderWidth - renderOffsetX, renderHeight - renderOffsetY);
+#endif
+}
+
// Compute framebuffer size relative to screen size and display size
// NOTE: Global variables renderWidth/renderHeight and renderOffsetX/renderOffsetY can be modified
static void SetupFramebufferSize(int displayWidth, int displayHeight)