diff options
| author | gulrak <[email protected]> | 2022-05-20 17:25:47 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-05-20 17:25:47 +0200 |
| commit | 789e50406908d1f762f9f6471af7a9b8c20e1675 (patch) | |
| tree | d2b1007ba3eef37800806abf0b9ea7a059ea20dc | |
| parent | 76c3881944586b8f705d1857dbfcd8fe2a3ed0e1 (diff) | |
| download | raylib-789e50406908d1f762f9f6471af7a9b8c20e1675.tar.gz raylib-789e50406908d1f762f9f6471af7a9b8c20e1675.zip | |
use GetWindowScaleDPI to calculate size for rlReadScreenPixels in screenshot/recording (#2446)
| -rw-r--r-- | src/rcore.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/rcore.c b/src/rcore.c index 99f351ac..dbcf670b 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -2049,8 +2049,9 @@ void EndDrawing(void) { // Get image data for the current frame (from backbuffer) // NOTE: This process is quite slow... :( - unsigned char *screenData = rlReadScreenPixels(CORE.Window.screen.width, CORE.Window.screen.height); - msf_gif_frame(&gifState, screenData, 10, 16, CORE.Window.screen.width*4); + Vector2 scale = GetWindowScaleDPI(); + unsigned char *screenData = rlReadScreenPixels(CORE.Window.render.width*scale.x, CORE.Window.render.height*scale.y); + msf_gif_frame(&gifState, screenData, 10, 16, CORE.Window.render.width*scale.x*4); RL_FREE(screenData); // Free image data } @@ -2772,8 +2773,9 @@ void SetConfigFlags(unsigned int flags) void TakeScreenshot(const char *fileName) { #if defined(SUPPORT_MODULE_RTEXTURES) - unsigned char *imgData = rlReadScreenPixels(CORE.Window.render.width, CORE.Window.render.height); - Image image = { imgData, CORE.Window.render.width, CORE.Window.render.height, 1, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 }; + Vector2 scale = GetWindowScaleDPI(); + unsigned char *imgData = rlReadScreenPixels(CORE.Window.render.width*scale.x, CORE.Window.render.height*scale.y); + Image image = { imgData, CORE.Window.render.width*scale.x, CORE.Window.render.height*scale.y, 1, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 }; char path[2048] = { 0 }; strcpy(path, TextFormat("%s/%s", CORE.Storage.basePath, fileName)); @@ -5281,7 +5283,8 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i gifRecording = true; gifFrameCounter = 0; - msf_gif_begin(&gifState, CORE.Window.screen.width, CORE.Window.screen.height); + Vector2 scale = GetWindowScaleDPI(); + msf_gif_begin(&gifState, CORE.Window.render.width*scale.x, CORE.Window.render.height*scale.y); screenshotCounter++; TRACELOG(LOG_INFO, "SYSTEM: Start animated GIF recording: %s", TextFormat("screenrec%03i.gif", screenshotCounter)); |
