Changed the OpenGL part and the GLSL shaders to use UBO and
[demo] / src / gfxapi.h
1 #ifndef GFXAPI_H_
2 #define GFXAPI_H_
3
4 class Mesh;
5 class ShaderProgram;
6 class Shader;
7 class Texture;
8 class UniformBuffer;
9
10 enum Gfx_API {
11         GFX_GL,
12         GFX_VK
13 };
14
15 enum Gfx_cull_face {
16         GFX_CULL_NONE,
17         GFX_CULL_FRONT,
18         GFX_CULL_BACK
19 };
20
21 extern void (*gfx_clear)(float r, float g, float b);
22 extern void (*gfx_viewport)(int x, int y, int width, int height);
23 extern void (*gfx_zbuffer)(bool enable);
24 extern void (*gfx_cull_face)(Gfx_cull_face cf);
25 extern void (*gfx_reshape)(int width, int height);
26 extern void (*gfx_wireframe)(bool enable);
27 extern void (*gfx_swapbuffers)();
28 extern void (*gfx_begin_drawing)();
29 extern void (*gfx_end_drawing)();
30
31 bool gfx_init(Gfx_API api);
32 void gfx_cleanup();
33
34 Mesh *gfx_create_mesh();
35 Texture *gfx_create_texture();
36 ShaderProgram *gfx_create_shader_program();
37 Shader *gfx_create_shader();
38 UniformBuffer *gfx_create_uniform_buffer();
39
40 char *gfx_get_shader_path();
41
42 #endif // GFXAPI_H_