LibGame v0.4.0
The LG Game Engine - Copyright (C) 2024-2026 ETMSoftware
Loading...
Searching...
No Matches
lg_shader_progs.h
1/*
2 * LibGame - Copyright (C) Emmanuel Thomas-Maurin 2011-2026
3 * All rights reserved
4 */
5
6#ifndef LG_SHADER_PROGS_H
7#define LG_SHADER_PROGS_H
8
9#define LG_INVALID_SHADER_PROG_ID 500000
10
11typedef struct {
12 unsigned int id;
14
15/* Uniform locations */
16typedef struct {
17 int world_m;
18 int view_m;
19 int proj_m;
20 int view_proj_m;
21 int model_view_m; /* Or world_view_m */
22 int model_view_proj_m; /* Or world_view_proj_m or MVP_matrix */
23 int texcoords;
24 int light_type;
25 int light_pos;
26 int light_dir;
27 int light_color;
28 int luminosity_k;
29 int grid_half_size;
30 int grid_scaling;
32
33/* Vertex Attrib Pointer params */
34typedef struct {
35 int32_t index;
36 const char *attrib_name;
37 uint32_t num_components; /* 1 to 4 */
38 int32_t type; /* One of GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_FIXED, GL_FLOAT */
39 zboolean do_normalize;
40 size_t stride; /* Byte offset between consecutive generic vertex attributes */
41 void *first_component_offset; /* For instance: offsetof(Vertex_uv_n, u) */
43
44/* GL_VERTEX_SHADER, GL_FRAGMENT_SHADER, or GL_GEOMETRY_SHADER_OES */
45typedef struct{
46 int type;
47 const char *string;
49
50#define VAP_END {-1, NULL, 0, 0, 0, 0, NULL}
51
52LG_ShaderProg LG_ShaderProg_create(const char **, const char **, const char **, LG_VAP_params *);
53
55
56void LG_ShaderProg_use(LG_ShaderProg *, zboolean);
57
58char *LG_ShaderProg_load_src_from_file(const char *);
59
61
63
64uint32_t lg_compile_shader(int, const char **);
65
66void lg_shader_info_log(uint32_t);
67
68void lg_shader_program_info_log(uint32_t);
69
70const char *lg_shader_get_string_from_type(int);
71
72#endif /* LG_SHADER_PROGS_H */
void LG_ShaderProg_use(LG_ShaderProg *shader_prog, zboolean gl_checking)
Definition lg_shader_progs.c:199
char * LG_ShaderProg_load_src_from_file(const char *path)
Definition lg_shader_progs.c:231
const char * lg_shader_get_string_from_type(int type)
Definition lg_shader_progs.c:383
void LG_ShaderProg_delete(LG_ShaderProg *shader_prog)
Definition lg_shader_progs.c:184
LG_ShaderProg LG_ShaderProg_create(const char **vertex_shader_code, const char **fragment_shader_code, const char **geometry_shader_code, LG_VAP_params *params)
Definition lg_shader_progs.c:64
void lg_shader_program_info_log(uint32_t shader_prog_id)
Definition lg_shader_progs.c:358
int LG_ShaderProg_get_uniform_loc(LG_ShaderProg *shader_prog, const char *uniform_name)
Definition lg_shader_progs.c:295
int LG_ShaderProg_get_attrib_loc(LG_ShaderProg *shader_prog, const char *attrib_name)
Definition lg_shader_progs.c:267
uint32_t lg_compile_shader(int type, const char **shader_code)
Definition lg_shader_progs.c:314
void lg_shader_info_log(uint32_t shader)
Definition lg_shader_progs.c:340
Definition lg_shader_progs.h:11
Definition lg_shader_progs.h:16
Definition lg_shader_progs.h:34
Definition lg_shader_progs.h:45