Created the Window and Renderer and started implementing the functions
for the game loop
This commit is contained in:
1 parent
a0d8b75c11
commit
33066b381e
11 files changed
+280
-24
No files matched your search
@@ -0,0 +1,58 @@
|
||||
#include "Renderer.h"
|
||||
#include "SDL.h"
|
||||
#include "SDL_render.h"
|
||||
#include "engine_build_config.h"
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef DEBUG_ENGINE
|
||||
#include <stdio.h>
|
||||
#endif /* DEBUG_ENGINE */
|
||||
|
||||
typedef struct renderer {
|
||||
SDL_Renderer *SDL_base_renderer;
|
||||
} Renderer;
|
||||
|
||||
Renderer *create_renderer() { return (Renderer *)malloc(sizeof(Renderer)); }
|
||||
|
||||
bool init_renderer(Renderer *renderer, SDL_Window *window) {
|
||||
if (!renderer || !window) {
|
||||
return false;
|
||||
}
|
||||
|
||||
renderer->SDL_base_renderer = SDL_CreateRenderer(
|
||||
window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
||||
|
||||
// Technically speaking, I believe it should be possible to just return
|
||||
// the pointer. However, to make sure that everything is clear, I am
|
||||
// performing a test that returns true or false based on whether the
|
||||
// pointer was initialised or not.
|
||||
return renderer->SDL_base_renderer ? true : false;
|
||||
}
|
||||
|
||||
void render_clear(const Renderer *renderer, SDL_Color color) {
|
||||
SDL_SetRenderDrawColor(renderer->SDL_base_renderer, color.r, color.r, color.b,
|
||||
color.a);
|
||||
|
||||
SDL_RenderClear(renderer->SDL_base_renderer);
|
||||
}
|
||||
|
||||
void swap_buffers(const Renderer *renderer) {
|
||||
SDL_RenderPresent(renderer->SDL_base_renderer);
|
||||
}
|
||||
|
||||
void destroy_renderer(Renderer *renderer) {
|
||||
if (renderer) {
|
||||
if (renderer->SDL_base_renderer) {
|
||||
SDL_DestroyRenderer(renderer->SDL_base_renderer);
|
||||
renderer->SDL_base_renderer = NULL;
|
||||
}
|
||||
|
||||
free(renderer);
|
||||
renderer = NULL;
|
||||
|
||||
#ifdef DEBUG_ENGINE
|
||||
printf("Renderer destroyed successfully\n");
|
||||
#endif /* DEBUG_ENGINE */
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user