51 lines
1.3 KiB
C
51 lines
1.3 KiB
C
//
|
|
// Created by rov on 12/26/25.
|
|
//
|
|
|
|
#include "render.h"
|
|
#include "window.h"
|
|
#include "gui.h"
|
|
|
|
void Render_Frame(App_t* app) {
|
|
Gui_StartRender();
|
|
|
|
SDL_Renderer *renderer = Window_GetRenderer();
|
|
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
|
|
SDL_RenderClear(renderer);
|
|
|
|
Render_MainWindowBackground(app);
|
|
Gui_Render(&app->gui, &app->configParams);
|
|
|
|
Gui_FinishRender();
|
|
SDL_RenderPresent(renderer);
|
|
}
|
|
|
|
void Render_MainWindowBackground(const App_t *app) {
|
|
SDL_Renderer *renderer = Window_GetRenderer();
|
|
|
|
if (app->bitmap.marbleTexture == NULL) {
|
|
SDL_SetRenderDrawColor(renderer, 64, 64, 64, 255);
|
|
SDL_RenderClear(renderer);
|
|
return;
|
|
}
|
|
|
|
const int TILE_SIZE = 128;
|
|
|
|
// Calculate how many tiles we need to cover the screen
|
|
const int tilesX = app->metrics.screenWidth / TILE_SIZE + 1;
|
|
const int tilesY = app->metrics.screenHeight / TILE_SIZE + 1;
|
|
|
|
for (int y = 0; y < tilesY; y++) {
|
|
for (int x = 0; x < tilesX; x++) {
|
|
SDL_FRect destRect = {
|
|
(float) (x * TILE_SIZE),
|
|
(float) (y * TILE_SIZE),
|
|
(float) TILE_SIZE,
|
|
(float) TILE_SIZE
|
|
};
|
|
|
|
SDL_RenderTexture(renderer, app->bitmap.marbleTexture, NULL, &destRect);
|
|
}
|
|
}
|
|
}
|