Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/src/pc/gfx/gfx_rendering_api.h
7861 views
1
#ifndef GFX_RENDERING_API_H
2
#define GFX_RENDERING_API_H
3
4
#include <stddef.h>
5
#include <stdint.h>
6
#include <stdbool.h>
7
8
struct ShaderProgram;
9
10
struct GfxRenderingAPI {
11
bool (*z_is_from_0_to_1)(void);
12
void (*unload_shader)(struct ShaderProgram *old_prg);
13
void (*load_shader)(struct ShaderProgram *new_prg);
14
struct ShaderProgram *(*create_and_load_new_shader)(uint32_t shader_id);
15
struct ShaderProgram *(*lookup_shader)(uint32_t shader_id);
16
void (*shader_get_info)(struct ShaderProgram *prg, uint8_t *num_inputs, bool used_textures[2]);
17
uint32_t (*new_texture)(void);
18
void (*select_texture)(int tile, uint32_t texture_id);
19
void (*upload_texture)(const uint8_t *rgba32_buf, int width, int height);
20
void (*set_sampler_parameters)(int sampler, bool linear_filter, uint32_t cms, uint32_t cmt);
21
void (*set_depth_test)(bool depth_test);
22
void (*set_depth_mask)(bool z_upd);
23
void (*set_zmode_decal)(bool zmode_decal);
24
void (*set_viewport)(int x, int y, int width, int height);
25
void (*set_scissor)(int x, int y, int width, int height);
26
void (*set_use_alpha)(bool use_alpha);
27
void (*draw_triangles)(float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris);
28
void (*init)(void);
29
void (*on_resize)(void);
30
void (*start_frame)(void);
31
void (*end_frame)(void);
32
void (*finish_render)(void);
33
};
34
35
#endif
36
37