Suckless OGL 1.0.0
A lean, high-performance C11 PBR Renderer
Loading...
Searching...
No Matches
render_utils.h
Go to the documentation of this file.
1#ifndef RENDER_UTILS_H
2#define RENDER_UTILS_H
3
4#include "gl_common.h"
5#include <stddef.h>
6
21// -----------------------------------------------------------------------------
22// Texture Management
23// -----------------------------------------------------------------------------
24
39GLuint render_utils_create_color_texture(float red, float green, float blue,
40 float alpha);
41
54void render_utils_bind_texture_safe(GLenum unit, GLuint texture,
55 GLuint fallback_tex);
56
73void render_utils_reset_texture_units(int start_unit, int end_unit,
74 GLuint fallback_tex);
75
76// -----------------------------------------------------------------------------
77// Geometry Helpers
78// -----------------------------------------------------------------------------
79
89void render_utils_create_empty_vao(GLuint* vao);
90
102void render_utils_create_quad_vbo(GLuint* vbo);
103
111void render_utils_create_wire_cube_vbo(GLuint* vbo);
112
121void render_utils_create_wire_quad_vbo(GLuint* vbo);
122
136void render_utils_create_fullscreen_quad(GLuint* vao, GLuint* vbo);
137
138// -----------------------------------------------------------------------------
139// Debugging / Validation
140// -----------------------------------------------------------------------------
141
145typedef struct {
146 const char*
148 const char* renderer;
150 const char* version;
151} GPUInfo;
152
159
172void render_utils_generate_gpu_identifier(const char* vendor,
173 const char* renderer, char* buffer,
174 size_t size);
175
184void render_utils_get_gpu_identifier(char* buffer, size_t size);
185
194int render_utils_check_framebuffer(const char* label);
195
209GLuint render_utils_create_texture_2d(int width, int height,
210 GLenum internal_format, GLint levels,
211 const char* label);
212
226void render_utils_setup_sphere_instance_attributes(GLuint binding_point,
227 GLsizei stride,
228 size_t offset_albedo,
229 size_t offset_metallic,
230 size_t offset_prev_center);
231
232// -----------------------------------------------------------------------------
233// State Management
234// -----------------------------------------------------------------------------
235
240typedef struct {
241 GLboolean depth_enabled;
242 GLboolean blend_enabled;
243 GLint polygon_mode[2];
245
250
256
261
262#endif // RENDER_UTILS_H
Common OpenGL definitions, RAII helpers, and utilities.
void render_utils_get_gpu_identifier(char *buffer, size_t size)
Generates a filesystem-safe identifier for the current GPU.
Definition render_utils.c:245
void render_utils_reset_texture_units(int start_unit, int end_unit, GLuint fallback_tex)
Resets a range of texture units to a safe state.
Definition render_utils.c:48
void render_utils_setup_sphere_instance_attributes(GLuint binding_point, GLsizei stride, size_t offset_albedo, size_t offset_metallic, size_t offset_prev_center)
Sets up instance attributes for sphere rendering (Model, Albedo, PBR).
Definition render_utils.c:276
GPUInfo render_utils_get_gpu_info(void)
Retrieves currently active GPU hardware and driver information.
Definition render_utils.c:181
void render_utils_bind_texture_safe(GLenum unit, GLuint texture, GLuint fallback_tex)
Safely binds a texture to a specific unit, using a fallback if needed.
Definition render_utils.c:37
void render_utils_create_wire_cube_vbo(GLuint *vbo)
Creates a wireframe Unit Cube VBO (GL_LINES).
Definition render_utils.c:86
void render_utils_create_quad_vbo(GLuint *vbo)
Creates a standard centered Quad VBO.
Definition render_utils.c:71
void render_utils_create_fullscreen_quad(GLuint *vao, GLuint *vbo)
Creates a Full-Screen Quad VAO and VBO.
Definition render_utils.c:126
void render_utils_generate_gpu_identifier(const char *vendor, const char *renderer, char *buffer, size_t size)
Sanitizes GPU vendor and renderer strings into a filesystem-safe identifier.
Definition render_utils.c:214
GLuint render_utils_create_texture_2d(int width, int height, GLenum internal_format, GLint levels, const char *label)
Creates a 2D texture with specified parameters.
Definition render_utils.c:252
void render_utils_create_empty_vao(GLuint *vao)
Creates an empty Vertex Array Object (VAO).
Definition render_utils.c:63
void render_utils_create_wire_quad_vbo(GLuint *vbo)
Creates a wireframe Quad VBO (GL_LINE_LOOP).
Definition render_utils.c:112
void render_utils_restore_state(const GLStateBackup *state)
Restores OpenGL state from a backup struct.
Definition render_utils.c:331
GLStateBackup render_utils_save_state(void)
Saves current OpenGL state to a backup struct.
Definition render_utils.c:322
GLuint render_utils_create_color_texture(float red, float green, float blue, float alpha)
Creates a 1x1 floating-point texture of a specific color.
Definition render_utils.c:13
int render_utils_check_framebuffer(const char *label)
Checks the completeness of the currently bound framebuffer.
Definition render_utils.c:171
void render_utils_setup_ui_state(void)
Configures standard 2D/UI rendering state (Alpha blend, No depth).
Definition render_utils.c:348
Struct to backup common OpenGL state bits to restore after 2D/UI passes.
Definition render_utils.h:240
GLboolean depth_enabled
Definition render_utils.h:241
GLboolean blend_enabled
Definition render_utils.h:242
Struct to hold GPU hardware and driver information.
Definition render_utils.h:145
const char * vendor
Definition render_utils.h:147
const char * version
Definition render_utils.h:150
const char * renderer
Definition render_utils.h:148