Loading...
Searching...
No Matches
graphics_api.h
Go to the documentation of this file.
1//
2// Created by denzel on 25/09/2025.
3//
4
5#pragma once
6#include <cstdint>
7
8namespace hellfire {
9 enum class BlendMode {
10 NONE,
11 ALPHA,
14 };
15
16 enum class DepthTest {
18 LESS,
20 GREATER,
21 EQUAL
22 };
23
24 enum class CullMode {
25 NONE,
26 FRONT,
27 BACK,
29 };
30
31 struct RenderState {
35 bool depth_write = true;
36 bool wireframe = false;
37 };
38
39 struct ShadowSettings {
40
41 };
42
43 /// Abstract graphics context
45 public:
46 virtual ~IGraphicsContext() = default;
47
48 // Frame management
49 virtual void begin_frame() = 0;
50 virtual void end_frame() = 0;
51 virtual void clear(float r, float g, float b) = 0;
52
53 // Drawing
54 virtual void draw_mesh(uint32_t vertex_array, uint32_t index_count) = 0;
55 virtual void draw_instanced(uint32_t vertex_array, uint32_t index_count, uint32_t instance_count) = 0;
56
57 // Resource management
58 virtual uint32_t create_shader_program(const char* vertex_src, const char* fragment_src) = 0;
59 virtual void use_shader_program(uint32_t program_id) = 0;
60 virtual void set_uniform_mat4(uint32_t program_id, const char* name, const float* data) = 0;
61 virtual void set_uniform_vec3(uint32_t program_id, const char* name, float x, float y, float z) = 0;
62 virtual void set_uniform_float(uint32_t program_id, const char* name, float value) = 0;
63 virtual void set_uniform_int(uint32_t program_id, const char* name, int value) = 0;
64
65 // Framebuffer operations
66 virtual uint32_t create_framebuffer(uint32_t width, uint32_t height) = 0;
67 virtual void bind_framebuffer(uint32_t framebuffer_id) = 0;
68 virtual void unbind_framebuffer() = 0;
69 virtual uint32_t get_framebuffer_texture(uint32_t framebuffer_id) = 0;
70 virtual void resize_framebuffer(uint32_t framebuffer_id, uint32_t width, uint32_t height) = 0;
71 };
72}
Abstract graphics context.
virtual void bind_framebuffer(uint32_t framebuffer_id)=0
virtual void unbind_framebuffer()=0
virtual void resize_framebuffer(uint32_t framebuffer_id, uint32_t width, uint32_t height)=0
virtual void draw_mesh(uint32_t vertex_array, uint32_t index_count)=0
virtual uint32_t create_shader_program(const char *vertex_src, const char *fragment_src)=0
virtual void use_shader_program(uint32_t program_id)=0
virtual void draw_instanced(uint32_t vertex_array, uint32_t index_count, uint32_t instance_count)=0
virtual void set_uniform_float(uint32_t program_id, const char *name, float value)=0
virtual void end_frame()=0
virtual void clear(float r, float g, float b)=0
virtual uint32_t get_framebuffer_texture(uint32_t framebuffer_id)=0
virtual void begin_frame()=0
virtual void set_uniform_mat4(uint32_t program_id, const char *name, const float *data)=0
virtual uint32_t create_framebuffer(uint32_t width, uint32_t height)=0
virtual ~IGraphicsContext()=default
virtual void set_uniform_vec3(uint32_t program_id, const char *name, float x, float y, float z)=0
virtual void set_uniform_int(uint32_t program_id, const char *name, int value)=0