#ifndef GFX_RENDERING_API_H #define GFX_RENDERING_API_H #include #include #include struct ShaderProgram; struct GfxRenderingAPI { bool (*z_is_from_0_to_1)(void); void (*unload_shader)(struct ShaderProgram *old_prg); void (*load_shader)(struct ShaderProgram *new_prg); struct ShaderProgram *(*create_and_load_new_shader)(uint32_t shader_id); struct ShaderProgram *(*lookup_shader)(uint32_t shader_id); void (*shader_get_info)(struct ShaderProgram *prg, uint8_t *num_inputs, bool used_textures[2]); uint32_t (*new_texture)(void); void (*select_texture)(int tile, uint32_t texture_id); void (*upload_texture)(uint8_t *rgba32_buf, int width, int height); void (*set_sampler_parameters)(int sampler, bool linear_filter, uint32_t cms, uint32_t cmt); void (*set_depth_test)(bool depth_test); void (*set_depth_mask)(bool z_upd); void (*set_zmode_decal)(bool zmode_decal); void (*set_viewport)(int x, int y, int width, int height); void (*set_scissor)(int x, int y, int width, int height); void (*set_use_alpha)(bool use_alpha); void (*draw_triangles)(float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris); void (*init)(void); void (*start_frame)(void); }; #endif