mirror of
https://github.com/raysan5/raylib.git
synced 2026-01-12 16:15:33 +00:00
REMOVED: SetupFramebuffer(), most platforms do not need it any more
Kept only for platforms that could potentially need it
This commit is contained in:
@@ -267,6 +267,8 @@ static void AndroidCommandCallback(struct android_app *app, int32_t cmd);
|
||||
static int32_t AndroidInputCallback(struct android_app *app, AInputEvent *event); // Process Android inputs
|
||||
static GamepadButton AndroidTranslateGamepadButton(int button); // Map Android gamepad button to raylib gamepad button
|
||||
|
||||
static void SetupFramebuffer(int width, int height); // Setup main framebuffer (required by InitPlatform())
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// Module Functions Declaration
|
||||
//----------------------------------------------------------------------------------
|
||||
@@ -1419,4 +1421,82 @@ static int32_t AndroidInputCallback(struct android_app *app, AInputEvent *event)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Compute framebuffer size relative to screen size and display size
|
||||
// NOTE: Global variables CORE.Window.render.width/CORE.Window.render.height and CORE.Window.renderOffset.x/CORE.Window.renderOffset.y can be modified
|
||||
static void SetupFramebuffer(int width, int height)
|
||||
{
|
||||
// Calculate CORE.Window.render.width and CORE.Window.render.height, we have the display size (input params) and the desired screen size (global var)
|
||||
if ((CORE.Window.screen.width > CORE.Window.display.width) || (CORE.Window.screen.height > CORE.Window.display.height))
|
||||
{
|
||||
TRACELOG(LOG_WARNING, "DISPLAY: Downscaling required: Screen size (%ix%i) is bigger than display size (%ix%i)", CORE.Window.screen.width, CORE.Window.screen.height, CORE.Window.display.width, CORE.Window.display.height);
|
||||
|
||||
// Downscaling to fit display with border-bars
|
||||
float widthRatio = (float)CORE.Window.display.width/(float)CORE.Window.screen.width;
|
||||
float heightRatio = (float)CORE.Window.display.height/(float)CORE.Window.screen.height;
|
||||
|
||||
if (widthRatio <= heightRatio)
|
||||
{
|
||||
CORE.Window.render.width = CORE.Window.display.width;
|
||||
CORE.Window.render.height = (int)round((float)CORE.Window.screen.height*widthRatio);
|
||||
CORE.Window.renderOffset.x = 0;
|
||||
CORE.Window.renderOffset.y = (CORE.Window.display.height - CORE.Window.render.height);
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Window.render.width = (int)round((float)CORE.Window.screen.width*heightRatio);
|
||||
CORE.Window.render.height = CORE.Window.display.height;
|
||||
CORE.Window.renderOffset.x = (CORE.Window.display.width - CORE.Window.render.width);
|
||||
CORE.Window.renderOffset.y = 0;
|
||||
}
|
||||
|
||||
// Screen scaling required
|
||||
float scaleRatio = (float)CORE.Window.render.width/(float)CORE.Window.screen.width;
|
||||
CORE.Window.screenScale = MatrixScale(scaleRatio, scaleRatio, 1.0f);
|
||||
|
||||
// NOTE: We render to full display resolution!
|
||||
// We just need to calculate above parameters for downscale matrix and offsets
|
||||
CORE.Window.render.width = CORE.Window.display.width;
|
||||
CORE.Window.render.height = CORE.Window.display.height;
|
||||
|
||||
TRACELOG(LOG_WARNING, "DISPLAY: Downscale matrix generated, content will be rendered at (%ix%i)", CORE.Window.render.width, CORE.Window.render.height);
|
||||
}
|
||||
else if ((CORE.Window.screen.width < CORE.Window.display.width) || (CORE.Window.screen.height < CORE.Window.display.height))
|
||||
{
|
||||
// Required screen size is smaller than display size
|
||||
TRACELOG(LOG_INFO, "DISPLAY: Upscaling required: Screen size (%ix%i) smaller than display size (%ix%i)", CORE.Window.screen.width, CORE.Window.screen.height, CORE.Window.display.width, CORE.Window.display.height);
|
||||
|
||||
if ((CORE.Window.screen.width == 0) || (CORE.Window.screen.height == 0))
|
||||
{
|
||||
CORE.Window.screen.width = CORE.Window.display.width;
|
||||
CORE.Window.screen.height = CORE.Window.display.height;
|
||||
}
|
||||
|
||||
// Upscaling to fit display with border-bars
|
||||
float displayRatio = (float)CORE.Window.display.width/(float)CORE.Window.display.height;
|
||||
float screenRatio = (float)CORE.Window.screen.width/(float)CORE.Window.screen.height;
|
||||
|
||||
if (displayRatio <= screenRatio)
|
||||
{
|
||||
CORE.Window.render.width = CORE.Window.screen.width;
|
||||
CORE.Window.render.height = (int)round((float)CORE.Window.screen.width/displayRatio);
|
||||
CORE.Window.renderOffset.x = 0;
|
||||
CORE.Window.renderOffset.y = (CORE.Window.render.height - CORE.Window.screen.height);
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Window.render.width = (int)round((float)CORE.Window.screen.height*displayRatio);
|
||||
CORE.Window.render.height = CORE.Window.screen.height;
|
||||
CORE.Window.renderOffset.x = (CORE.Window.render.width - CORE.Window.screen.width);
|
||||
CORE.Window.renderOffset.y = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Window.render.width = CORE.Window.screen.width;
|
||||
CORE.Window.render.height = CORE.Window.screen.height;
|
||||
CORE.Window.renderOffset.x = 0;
|
||||
CORE.Window.renderOffset.y = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// EOF
|
||||
|
||||
@@ -383,7 +383,7 @@ void SetWindowState(unsigned int flags)
|
||||
}
|
||||
if (FLAG_IS_SET(flags, FLAG_FULLSCREEN_MODE))
|
||||
{
|
||||
if (!CORE.Window.fullscreen) ToggleFullscreen();
|
||||
ToggleFullscreen();
|
||||
}
|
||||
if (FLAG_IS_SET(flags, FLAG_WINDOW_RESIZABLE))
|
||||
{
|
||||
@@ -457,7 +457,7 @@ void ClearWindowState(unsigned int flags)
|
||||
}
|
||||
if (FLAG_IS_SET(flags, FLAG_FULLSCREEN_MODE))
|
||||
{
|
||||
if (CORE.Window.fullscreen) ToggleFullscreen();
|
||||
ToggleFullscreen();
|
||||
}
|
||||
if (FLAG_IS_SET(flags, FLAG_WINDOW_RESIZABLE))
|
||||
{
|
||||
@@ -508,7 +508,7 @@ void ClearWindowState(unsigned int flags)
|
||||
}
|
||||
if (FLAG_IS_SET(flags, FLAG_BORDERLESS_WINDOWED_MODE))
|
||||
{
|
||||
if (CORE.Window.fullscreen) ToggleBorderlessWindowed();
|
||||
ToggleBorderlessWindowed();
|
||||
}
|
||||
if (FLAG_IS_SET(flags, FLAG_MSAA_4X_HINT))
|
||||
{
|
||||
@@ -1256,13 +1256,11 @@ int InitPlatform(void)
|
||||
// Check window creation flags
|
||||
if (FLAG_IS_SET(CORE.Window.flags, FLAG_FULLSCREEN_MODE))
|
||||
{
|
||||
CORE.Window.fullscreen = true;
|
||||
FLAG_SET(flags, RGFW_windowFullscreen);
|
||||
}
|
||||
|
||||
if (FLAG_IS_SET(CORE.Window.flags, FLAG_BORDERLESS_WINDOWED_MODE))
|
||||
{
|
||||
CORE.Window.fullscreen = true;
|
||||
FLAG_SET(flags, RGFW_windowedFullscreen);
|
||||
}
|
||||
|
||||
@@ -1313,10 +1311,6 @@ int InitPlatform(void)
|
||||
CORE.Window.display.width = CORE.Window.screen.width;
|
||||
CORE.Window.display.height = CORE.Window.screen.height;
|
||||
#endif
|
||||
// TODO: Is this needed by raylib now?
|
||||
// If so, rcore_desktop_sdl should be updated too
|
||||
//SetupFramebuffer(CORE.Window.display.width, CORE.Window.display.height);
|
||||
|
||||
if (FLAG_IS_SET(CORE.Window.flags, FLAG_VSYNC_HINT)) RGFW_window_swapInterval(platform.window, 1);
|
||||
RGFW_window_makeCurrent(platform.window);
|
||||
|
||||
|
||||
@@ -2049,8 +2049,7 @@ static void HandleWindowResize(HWND hwnd, int *width, int *height)
|
||||
// TODO: Update framebuffer on resize
|
||||
CORE.Window.currentFbo.width = (int)clientSize.cx;
|
||||
CORE.Window.currentFbo.height = (int)clientSize.cy;
|
||||
//glViewport(0, 0, clientSize.cx, clientSize.cy);
|
||||
//SetupFramebuffer(0, 0);
|
||||
//SetupViewport(0, 0, clientSize.cx, clientSize.cy);
|
||||
|
||||
SetupViewport(clientSize.cx, clientSize.cy);
|
||||
CORE.Window.resizedLastFrame = true;
|
||||
|
||||
@@ -265,6 +265,8 @@ static int FindMatchingConnectorMode(const drmModeConnector *connector, const dr
|
||||
static int FindExactConnectorMode(const drmModeConnector *connector, uint width, uint height, uint fps, bool allowInterlaced); // Search exactly matching DRM connector mode in connector's list
|
||||
static int FindNearestConnectorMode(const drmModeConnector *connector, uint width, uint height, uint fps, bool allowInterlaced); // Search the nearest matching DRM connector mode in connector's list
|
||||
|
||||
static void SetupFramebuffer(int width, int height); // Setup main framebuffer (required by InitPlatform())
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// Module Functions Declaration
|
||||
//----------------------------------------------------------------------------------
|
||||
@@ -2479,4 +2481,82 @@ static int FindNearestConnectorMode(const drmModeConnector *connector, uint widt
|
||||
return nearestIndex;
|
||||
}
|
||||
|
||||
// Compute framebuffer size relative to screen size and display size
|
||||
// NOTE: Global variables CORE.Window.render.width/CORE.Window.render.height and CORE.Window.renderOffset.x/CORE.Window.renderOffset.y can be modified
|
||||
static void SetupFramebuffer(int width, int height)
|
||||
{
|
||||
// Calculate CORE.Window.render.width and CORE.Window.render.height, we have the display size (input params) and the desired screen size (global var)
|
||||
if ((CORE.Window.screen.width > CORE.Window.display.width) || (CORE.Window.screen.height > CORE.Window.display.height))
|
||||
{
|
||||
TRACELOG(LOG_WARNING, "DISPLAY: Downscaling required: Screen size (%ix%i) is bigger than display size (%ix%i)", CORE.Window.screen.width, CORE.Window.screen.height, CORE.Window.display.width, CORE.Window.display.height);
|
||||
|
||||
// Downscaling to fit display with border-bars
|
||||
float widthRatio = (float)CORE.Window.display.width/(float)CORE.Window.screen.width;
|
||||
float heightRatio = (float)CORE.Window.display.height/(float)CORE.Window.screen.height;
|
||||
|
||||
if (widthRatio <= heightRatio)
|
||||
{
|
||||
CORE.Window.render.width = CORE.Window.display.width;
|
||||
CORE.Window.render.height = (int)round((float)CORE.Window.screen.height*widthRatio);
|
||||
CORE.Window.renderOffset.x = 0;
|
||||
CORE.Window.renderOffset.y = (CORE.Window.display.height - CORE.Window.render.height);
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Window.render.width = (int)round((float)CORE.Window.screen.width*heightRatio);
|
||||
CORE.Window.render.height = CORE.Window.display.height;
|
||||
CORE.Window.renderOffset.x = (CORE.Window.display.width - CORE.Window.render.width);
|
||||
CORE.Window.renderOffset.y = 0;
|
||||
}
|
||||
|
||||
// Screen scaling required
|
||||
float scaleRatio = (float)CORE.Window.render.width/(float)CORE.Window.screen.width;
|
||||
CORE.Window.screenScale = MatrixScale(scaleRatio, scaleRatio, 1.0f);
|
||||
|
||||
// NOTE: We render to full display resolution!
|
||||
// We just need to calculate above parameters for downscale matrix and offsets
|
||||
CORE.Window.render.width = CORE.Window.display.width;
|
||||
CORE.Window.render.height = CORE.Window.display.height;
|
||||
|
||||
TRACELOG(LOG_WARNING, "DISPLAY: Downscale matrix generated, content will be rendered at (%ix%i)", CORE.Window.render.width, CORE.Window.render.height);
|
||||
}
|
||||
else if ((CORE.Window.screen.width < CORE.Window.display.width) || (CORE.Window.screen.height < CORE.Window.display.height))
|
||||
{
|
||||
// Required screen size is smaller than display size
|
||||
TRACELOG(LOG_INFO, "DISPLAY: Upscaling required: Screen size (%ix%i) smaller than display size (%ix%i)", CORE.Window.screen.width, CORE.Window.screen.height, CORE.Window.display.width, CORE.Window.display.height);
|
||||
|
||||
if ((CORE.Window.screen.width == 0) || (CORE.Window.screen.height == 0))
|
||||
{
|
||||
CORE.Window.screen.width = CORE.Window.display.width;
|
||||
CORE.Window.screen.height = CORE.Window.display.height;
|
||||
}
|
||||
|
||||
// Upscaling to fit display with border-bars
|
||||
float displayRatio = (float)CORE.Window.display.width/(float)CORE.Window.display.height;
|
||||
float screenRatio = (float)CORE.Window.screen.width/(float)CORE.Window.screen.height;
|
||||
|
||||
if (displayRatio <= screenRatio)
|
||||
{
|
||||
CORE.Window.render.width = CORE.Window.screen.width;
|
||||
CORE.Window.render.height = (int)round((float)CORE.Window.screen.width/displayRatio);
|
||||
CORE.Window.renderOffset.x = 0;
|
||||
CORE.Window.renderOffset.y = (CORE.Window.render.height - CORE.Window.screen.height);
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Window.render.width = (int)round((float)CORE.Window.screen.height*displayRatio);
|
||||
CORE.Window.render.height = CORE.Window.screen.height;
|
||||
CORE.Window.renderOffset.x = (CORE.Window.render.width - CORE.Window.screen.width);
|
||||
CORE.Window.renderOffset.y = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Window.render.width = CORE.Window.screen.width;
|
||||
CORE.Window.render.height = CORE.Window.screen.height;
|
||||
CORE.Window.renderOffset.x = 0;
|
||||
CORE.Window.renderOffset.y = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// EOF
|
||||
|
||||
79
src/rcore.c
79
src/rcore.c
@@ -492,7 +492,6 @@ extern int InitPlatform(void); // Initialize platform (graphics, inputs
|
||||
extern void ClosePlatform(void); // Close platform
|
||||
|
||||
static void InitTimer(void); // Initialize timer, hi-resolution if available (required by InitPlatform())
|
||||
static void SetupFramebuffer(int width, int height); // Setup main framebuffer (required by InitPlatform())
|
||||
static void SetupViewport(int width, int height); // Set viewport for a provided width and height
|
||||
|
||||
static void ScanDirectoryFiles(const char *basePath, FilePathList *list, const char *filter); // Scan all files and directories in a base path
|
||||
@@ -3827,84 +3826,6 @@ void SetupViewport(int width, int height)
|
||||
rlLoadIdentity(); // Reset current matrix (modelview)
|
||||
}
|
||||
|
||||
// Compute framebuffer size relative to screen size and display size
|
||||
// NOTE: Global variables CORE.Window.render.width/CORE.Window.render.height and CORE.Window.renderOffset.x/CORE.Window.renderOffset.y can be modified
|
||||
void SetupFramebuffer(int width, int height)
|
||||
{
|
||||
// Calculate CORE.Window.render.width and CORE.Window.render.height, we have the display size (input params) and the desired screen size (global var)
|
||||
if ((CORE.Window.screen.width > CORE.Window.display.width) || (CORE.Window.screen.height > CORE.Window.display.height))
|
||||
{
|
||||
TRACELOG(LOG_WARNING, "DISPLAY: Downscaling required: Screen size (%ix%i) is bigger than display size (%ix%i)", CORE.Window.screen.width, CORE.Window.screen.height, CORE.Window.display.width, CORE.Window.display.height);
|
||||
|
||||
// Downscaling to fit display with border-bars
|
||||
float widthRatio = (float)CORE.Window.display.width/(float)CORE.Window.screen.width;
|
||||
float heightRatio = (float)CORE.Window.display.height/(float)CORE.Window.screen.height;
|
||||
|
||||
if (widthRatio <= heightRatio)
|
||||
{
|
||||
CORE.Window.render.width = CORE.Window.display.width;
|
||||
CORE.Window.render.height = (int)round((float)CORE.Window.screen.height*widthRatio);
|
||||
CORE.Window.renderOffset.x = 0;
|
||||
CORE.Window.renderOffset.y = (CORE.Window.display.height - CORE.Window.render.height);
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Window.render.width = (int)round((float)CORE.Window.screen.width*heightRatio);
|
||||
CORE.Window.render.height = CORE.Window.display.height;
|
||||
CORE.Window.renderOffset.x = (CORE.Window.display.width - CORE.Window.render.width);
|
||||
CORE.Window.renderOffset.y = 0;
|
||||
}
|
||||
|
||||
// Screen scaling required
|
||||
float scaleRatio = (float)CORE.Window.render.width/(float)CORE.Window.screen.width;
|
||||
CORE.Window.screenScale = MatrixScale(scaleRatio, scaleRatio, 1.0f);
|
||||
|
||||
// NOTE: We render to full display resolution!
|
||||
// We just need to calculate above parameters for downscale matrix and offsets
|
||||
CORE.Window.render.width = CORE.Window.display.width;
|
||||
CORE.Window.render.height = CORE.Window.display.height;
|
||||
|
||||
TRACELOG(LOG_WARNING, "DISPLAY: Downscale matrix generated, content will be rendered at (%ix%i)", CORE.Window.render.width, CORE.Window.render.height);
|
||||
}
|
||||
else if ((CORE.Window.screen.width < CORE.Window.display.width) || (CORE.Window.screen.height < CORE.Window.display.height))
|
||||
{
|
||||
// Required screen size is smaller than display size
|
||||
TRACELOG(LOG_INFO, "DISPLAY: Upscaling required: Screen size (%ix%i) smaller than display size (%ix%i)", CORE.Window.screen.width, CORE.Window.screen.height, CORE.Window.display.width, CORE.Window.display.height);
|
||||
|
||||
if ((CORE.Window.screen.width == 0) || (CORE.Window.screen.height == 0))
|
||||
{
|
||||
CORE.Window.screen.width = CORE.Window.display.width;
|
||||
CORE.Window.screen.height = CORE.Window.display.height;
|
||||
}
|
||||
|
||||
// Upscaling to fit display with border-bars
|
||||
float displayRatio = (float)CORE.Window.display.width/(float)CORE.Window.display.height;
|
||||
float screenRatio = (float)CORE.Window.screen.width/(float)CORE.Window.screen.height;
|
||||
|
||||
if (displayRatio <= screenRatio)
|
||||
{
|
||||
CORE.Window.render.width = CORE.Window.screen.width;
|
||||
CORE.Window.render.height = (int)round((float)CORE.Window.screen.width/displayRatio);
|
||||
CORE.Window.renderOffset.x = 0;
|
||||
CORE.Window.renderOffset.y = (CORE.Window.render.height - CORE.Window.screen.height);
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Window.render.width = (int)round((float)CORE.Window.screen.height*displayRatio);
|
||||
CORE.Window.render.height = CORE.Window.screen.height;
|
||||
CORE.Window.renderOffset.x = (CORE.Window.render.width - CORE.Window.screen.width);
|
||||
CORE.Window.renderOffset.y = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CORE.Window.render.width = CORE.Window.screen.width;
|
||||
CORE.Window.render.height = CORE.Window.screen.height;
|
||||
CORE.Window.renderOffset.x = 0;
|
||||
CORE.Window.renderOffset.y = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Scan all files and directories in a base path
|
||||
// WARNING: files.paths[] must be previously allocated and
|
||||
// contain enough space to store all required paths
|
||||
|
||||
Reference in New Issue
Block a user