$darkmode
Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
billboard_rendering.h
Go to the documentation of this file.
1 
11 #ifndef BILLBOARD_RENDERING_H
12 #define BILLBOARD_RENDERING_H
13 
14 #include "gl_common.h"
15 #include "instanced_rendering.h" /* For SphereInstance */
16 #include "shader.h"
17 
22 typedef struct {
23  GLuint
24  vao;
25  GLuint instance_vbo;
28  int capacity;
29  GLuint vao_wire_quad;
30  GLuint vao_wire_box;
32 
45 void billboard_group_init(BillboardGroup* group, const SphereInstance* data,
46  int count);
47 
57 void billboard_group_prepare(BillboardGroup* group, GLuint quad_vbo,
58  GLuint wire_quad_vbo, GLuint wire_cube_vbo);
59 
65 
75  int count);
76 
88  GLuint src_buffer, int count);
89 
95 
103 
111 
119 
120 #endif /* BILLBOARD_RENDERING_H */
void billboard_group_init(BillboardGroup *group, const SphereInstance *data, int count)
Initializes the billboard group and allocates GPU memory.
Definition: billboard_rendering.c:11
void billboard_group_draw_debug_quads(BillboardGroup *group)
Draws wireframe quads for each instance.
Definition: billboard_rendering.c:187
void billboard_group_draw_debug_fill(BillboardGroup *group)
Draws filled quads for each instance (for debug transparency).
Definition: billboard_rendering.c:177
void billboard_group_draw(BillboardGroup *group)
Executes the instanced draw call for all billboards in the group.
Definition: billboard_rendering.c:146
void billboard_group_prepare(BillboardGroup *group, GLuint quad_vbo, GLuint wire_quad_vbo, GLuint wire_cube_vbo)
Prepares the VAO by linking a shared quad VBO with internal instance data.
Definition: billboard_rendering.c:136
void billboard_group_update_from_buffer(BillboardGroup *group, GLuint src_buffer, int count)
Updates instance data on the GPU by copying from another GPU buffer (e.g. SSBO).
Definition: billboard_rendering.c:69
void billboard_group_update(BillboardGroup *group, const SphereInstance *data, int count)
Updates instance data on the GPU.
Definition: billboard_rendering.c:32
void billboard_group_draw_debug_boxes(BillboardGroup *group)
Draws wireframe boxes for each instance.
Definition: billboard_rendering.c:203
void billboard_group_cleanup(BillboardGroup *group)
Releases all GPU resources allocated for the billboard group.
Definition: billboard_rendering.c:169
Common OpenGL definitions, RAII helpers, and utilities.
Mesh-based instanced rendering for spheres.
High-level OpenGL shader management with metadata and uniform caching.
Manages a set of billboarded instances on the GPU.
Definition: billboard_rendering.h:22
GLuint vao_wire_quad
Definition: billboard_rendering.h:29
GLuint vao
Definition: billboard_rendering.h:24
GLuint instance_vbo
Definition: billboard_rendering.h:25
int instance_count
Definition: billboard_rendering.h:27
GLuint vao_wire_box
Definition: billboard_rendering.h:30
int capacity
Definition: billboard_rendering.h:28
Per-instance data sent to the shader via an instanced VBO.
Definition: instanced_rendering.h:23