2022-10-29 00:22:23 -06:00
|
|
|
#ifndef ARC_GRAPHICS_RENDERER_H_
|
|
|
|
|
#define ARC_GRAPHICS_RENDERER_H_
|
|
|
|
|
|
2022-10-29 16:08:41 -06:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-04-04 03:45:53 -06:00
|
|
|
#include <stdint.h>
|
|
|
|
|
|
2024-05-20 03:46:04 -06:00
|
|
|
/**
|
|
|
|
|
* @brief predefien ARC_EngineData so as not to get circular reference
|
|
|
|
|
*/
|
|
|
|
|
typedef struct ARC_EngineData ARC_EngineData;
|
|
|
|
|
|
2023-03-10 17:34:22 -07:00
|
|
|
/**
|
2025-04-04 03:45:53 -06:00
|
|
|
* @note ARC_RendererType is determined by which window backend you are using
|
2023-03-10 17:34:22 -07:00
|
|
|
*/
|
|
|
|
|
typedef struct ARC_RendererType ARC_Renderer;
|
2022-10-29 00:22:23 -06:00
|
|
|
|
|
|
|
|
/**
|
2024-05-20 03:46:04 -06:00
|
|
|
* @brief creates ARC_Renderer type with ARC_EngineData
|
2022-10-29 00:22:23 -06:00
|
|
|
*
|
2022-10-29 16:08:41 -06:00
|
|
|
* @param renderer ARC_Renderer to initialize
|
2024-05-20 03:46:04 -06:00
|
|
|
* @param data the engine data to create from
|
2022-10-29 00:22:23 -06:00
|
|
|
*/
|
2024-05-20 03:46:04 -06:00
|
|
|
void ARC_Renderer_CreateWithEngineData(ARC_Renderer **renderer, ARC_EngineData *data);
|
2022-10-29 00:22:23 -06:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief destroys ARC_Renderer type
|
2022-10-29 16:08:41 -06:00
|
|
|
*
|
|
|
|
|
* @param renderer ARC_Renderer to destory
|
2022-10-29 00:22:23 -06:00
|
|
|
*/
|
|
|
|
|
void ARC_Renderer_Destroy(ARC_Renderer *renderer);
|
|
|
|
|
|
2024-05-20 03:46:04 -06:00
|
|
|
/**
|
|
|
|
|
* @breif clears the renderer
|
|
|
|
|
*
|
|
|
|
|
* @param renderer the renderer to clear
|
|
|
|
|
*/
|
2022-10-29 16:08:41 -06:00
|
|
|
void ARC_Renderer_Clear(ARC_Renderer *renderer);
|
|
|
|
|
|
2024-05-20 03:46:04 -06:00
|
|
|
/**
|
|
|
|
|
* @brief renders the renderer
|
|
|
|
|
*
|
2025-04-04 03:45:53 -06:00
|
|
|
* @param renderer renders all buffers and current renderer to window
|
2024-05-20 03:46:04 -06:00
|
|
|
*/
|
2022-10-29 17:07:51 -06:00
|
|
|
void ARC_Renderer_Render(ARC_Renderer *renderer);
|
2022-10-29 16:08:41 -06:00
|
|
|
|
2025-04-04 03:45:53 -06:00
|
|
|
/**
|
|
|
|
|
* @brief
|
|
|
|
|
*
|
|
|
|
|
* @param renderer
|
|
|
|
|
* @param zIndex
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Renderer_InitBuffer(ARC_Renderer *renderer, uint32_t zIndex);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief
|
|
|
|
|
*
|
|
|
|
|
* @param renderer
|
|
|
|
|
* @param zIndex
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Renderer_RemoveBuffer(ARC_Renderer *renderer, uint32_t zIndex);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief
|
|
|
|
|
*
|
|
|
|
|
* @param renderer
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Renderer_ClearBuffers(ARC_Renderer *renderer);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief
|
|
|
|
|
*
|
|
|
|
|
* @param renderer
|
|
|
|
|
* @param zIndex
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Renderer_SetCurrentBuffer(ARC_Renderer *renderer, uint32_t zIndex);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief
|
|
|
|
|
*
|
|
|
|
|
* @param renderer
|
|
|
|
|
*/
|
|
|
|
|
void ARC_Renderer_UnsetBuffer(ARC_Renderer *renderer);
|
|
|
|
|
|
2022-10-29 16:08:41 -06:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2022-10-29 00:22:23 -06:00
|
|
|
#endif // !ARC_GRAPHICS_RENDERER_H_
|