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 /src/gameScreen.c | |
parent | f8e133343b9c07dbb66ea313fd982339fbd72137 (diff) |
I over use render textures lol
Diffstat (limited to 'src/gameScreen.c')
-rw-r--r-- | src/gameScreen.c | 48 |
1 files changed, 39 insertions, 9 deletions
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) { |