41 lines
1.2 KiB
C
41 lines
1.2 KiB
C
#ifdef ARC_SDL
|
|
#include "arc/graphics/renderer.h"
|
|
#include "arc/graphics/sdl/renderer.h"
|
|
|
|
#include <SDL.h>
|
|
#include <stdlib.h>
|
|
#include "arc/graphics/window.h"
|
|
#include "arc/std/errno.h"
|
|
|
|
void ARC_Renderer_Create(ARC_Renderer **renderer, ARC_RenderInfo *info){
|
|
if(!info){
|
|
arc_errno = ARC_ERRNO_NULL;
|
|
ARC_DEBUG_ERR("ARC_Renderer_Create(**renderer, NULL)");
|
|
return;
|
|
}
|
|
|
|
*renderer = (ARC_Renderer *)malloc(sizeof(ARC_Renderer));
|
|
(*renderer)->renderer = SDL_CreateRenderer((SDL_Window *)info->window, info->index, info->flags);
|
|
|
|
if(!(*renderer)->renderer){
|
|
arc_errno = ARC_ERRNO_NULL;
|
|
ARC_DEBUG_LOG(arc_errno, "SDL_CreateRenderer(%p, %d, %u);", info->window, info->index, info->flags);
|
|
free(renderer);
|
|
}
|
|
}
|
|
|
|
void ARC_Renderer_Destroy(ARC_Renderer *renderer){
|
|
SDL_DestroyRenderer((SDL_Renderer *) renderer->renderer);
|
|
free(renderer);
|
|
}
|
|
|
|
void ARC_Renderer_Clear(ARC_Renderer *renderer){
|
|
SDL_SetRenderDrawColor((SDL_Renderer *)renderer->renderer, 0x1c, 0x2c, 0x3c, 0x00);
|
|
SDL_RenderClear((SDL_Renderer *)renderer->renderer);
|
|
}
|
|
|
|
void ARC_Renderer_Render(ARC_Renderer *renderer){
|
|
SDL_RenderPresent((SDL_Renderer *)renderer->renderer);
|
|
}
|
|
|
|
#endif //ARC_SDL
|