archeus/include/arc/graphics/renderer.h

107 lines
1.9 KiB
C
Raw Normal View History

#ifndef ARC_GRAPHICS_RENDERER_H_
#define ARC_GRAPHICS_RENDERER_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
/**
* @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
/**
* @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;
/**
* @brief creates ARC_Renderer type with ARC_EngineData
*
* @param renderer ARC_Renderer to initialize
* @param data the engine data to create from
*/
void ARC_Renderer_CreateWithEngineData(ARC_Renderer **renderer, ARC_EngineData *data);
/**
* @brief destroys ARC_Renderer type
*
* @param renderer ARC_Renderer to destory
*/
void ARC_Renderer_Destroy(ARC_Renderer *renderer);
/**
* @breif clears the renderer
*
* @param renderer the renderer to clear
*/
void ARC_Renderer_Clear(ARC_Renderer *renderer);
/**
* @brief renders the renderer
*
* @param renderer renders all buffers and current renderer to window
*/
void ARC_Renderer_Render(ARC_Renderer *renderer);
/**
* @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
* @param zIndex
*/
void ARC_Renderer_RenderBuffer(ARC_Renderer *renderer, uint32_t zIndex);
/**
* @brief
*
* @param renderer
*/
void ARC_Renderer_RenderBuffers(ARC_Renderer *renderer);
/**
* @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);
#ifdef __cplusplus
}
#endif
#endif // !ARC_GRAPHICS_RENDERER_H_