diff options
author | nathansmithsmith <nathansmith7@mailfence.com> | 2023-10-29 21:41:30 -0600 |
---|---|---|
committer | nathansmithsmith <nathansmith7@mailfence.com> | 2023-10-29 21:41:30 -0600 |
commit | 0dd152a45305b54c6881eed1ff7d8d814cb92e59 (patch) | |
tree | 3118d279cd4246fb73aab97bd84c38eb84092218 | |
parent | f8e133343b9c07dbb66ea313fd982339fbd72137 (diff) |
I over use render textures lol
-rw-r--r-- | src/game.c | 2 | ||||
-rw-r--r-- | src/gameScreen.c | 48 | ||||
-rw-r--r-- | src/gameScreen.h | 5 | ||||
-rw-r--r-- | src/settings.c | 5 | ||||
-rw-r--r-- | src/settings.h | 5 |
5 files changed, 53 insertions, 12 deletions
@@ -21,7 +21,7 @@ void initGame(Game * game) { initCameras(game, game->cameras); // Game screen. - initGameScreen(&game->gameScreen); + initGameScreen(game, &game->gameScreen); // World. initWorld(&game->world); diff --git a/src/gameScreen.c b/src/gameScreen.c index 61865bd..700b8cd 100644 --- a/src/gameScreen.c +++ b/src/gameScreen.c @@ -27,13 +27,23 @@ void initGameScreenGui(GameScreen * gameScreen) { gameScreen->levelComplete = false; } -void initGameScreen(GameScreen * gameScreen) { +void initGameScreen(Game * game, GameScreen * gameScreen) { initGameScreenGui(gameScreen); + + if (game->settings.useWorldRenderTexture) { + gameScreen->worldRender = LoadRenderTexture(game->settings.renderWidth, game->settings.renderHeight); + gameScreen->usingWorldRenderTexture = true; + } else { + gameScreen->usingWorldRenderTexture = false; + } } void freeGameScreen(GameScreen * gameScreen) { closeGyroscope(&gameScreen->gyroscope); closeRadar(&gameScreen->radar); + + if (gameScreen->usingWorldRenderTexture) + UnloadRenderTexture(gameScreen->worldRender); } void drawCrossHair(float size, float thick, Color color) { @@ -219,6 +229,17 @@ void gameScreenHandleLevels(Game * game, GameScreen * gameScreen) { } } +void renderWorldGameScreen(Game * game, GameScreen * gameScreen) { + BeginMode3D(game->cameras[gameScreen->mainCamera]); + + DrawGrid(50, 25.0); + + // Draw world. + drawWorld(&game->world, game); + + EndMode3D(); +} + void updateGameScreen(Game * game) { GameScreen * gameScreen = &game->gameScreen; @@ -242,14 +263,23 @@ void updateGameScreen(Game * game) { runCameraUpdate(game, game->cameras, gameScreen->mainCamera); // Draw. - BeginMode3D(game->cameras[gameScreen->mainCamera]); - - DrawGrid(50, 25.0); - - // Draw world. - drawWorld(&game->world, game); - - EndMode3D(); + if (gameScreen->usingWorldRenderTexture) { + BeginTextureMode(gameScreen->worldRender); + ClearBackground(BLACK); + renderWorldGameScreen(game, gameScreen); + EndTextureMode(); + + DrawTexturePro( + gameScreen->worldRender.texture, + (Rectangle){0.0, 0.0, game->settings.renderWidth, -game->settings.renderHeight}, + (Rectangle){0.0, 0.0, GetScreenWidth(), GetScreenHeight()}, + (Vector2){0.0, 0.0}, + 0.0, + WHITE + ); + } else { + renderWorldGameScreen(game, gameScreen); + } } void openGameScreen(Game * game) { diff --git a/src/gameScreen.h b/src/gameScreen.h index e4f8d20..aa690fa 100644 --- a/src/gameScreen.h +++ b/src/gameScreen.h @@ -22,9 +22,12 @@ typedef struct GameScreen { bool levelComplete; double timeAtLevelComplete; int lastLevel; + + RenderTexture worldRender; + bool usingWorldRenderTexture; } GameScreen; -void initGameScreen(GameScreen * gameScreen); +void initGameScreen(Game * game, GameScreen * gameScreen); void freeGameScreen(GameScreen * gameScreen); void updateGameScreen(Game * game); diff --git a/src/settings.c b/src/settings.c index b5614f1..3e3a178 100644 --- a/src/settings.c +++ b/src/settings.c @@ -13,7 +13,10 @@ void initSettings(Settings * settings) { .speedStick = 3, .joystickSensitivity = 0.5, .fps = 0, - .drawFps = true + .drawFps = true, + .renderWidth = 480, + .renderHeight = 270, + .useWorldRenderTexture = false }; } diff --git a/src/settings.h b/src/settings.h index 7d97bd2..119f4f4 100644 --- a/src/settings.h +++ b/src/settings.h @@ -29,6 +29,11 @@ typedef struct Settings { // Fps shit. int fps; bool drawFps; + + // World render shit. + int renderWidth; + int renderHeight; + bool useWorldRenderTexture; } Settings; void initSettings(Settings * settings); |