X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=src%2Fvg%2Fvg_shader.h;h=516d1a84c67587c7e44d56fe2853c870de252138;hb=3dd767bb10e6fee9cbffeb185d1a9685810c17b5;hp=06f455d59e663c52614595e2f547430d7b8fae95;hpb=3206e1d1db56fe2120efe6fbe4aefe85134fb2d5;p=vg.git diff --git a/src/vg/vg_shader.h b/src/vg/vg_shader.h index 06f455d..516d1a8 100644 --- a/src/vg/vg_shader.h +++ b/src/vg/vg_shader.h @@ -6,36 +6,42 @@ #include "vg/vg.h" #include "vg/vg_platform.h" +#if 0 #define STB_INCLUDE_IMPLEMENTATION #define STB_INCLUDE_LINE_GLSL -#define STB_MALLOC vg_alloc -#define STB_FREE vg_free +#define STB_MALLOC vg_alloc +#define STB_FREE vg_free #define STB_REALLOC vg_realloc #include "stb/stb_include.h" +#endif const char *vg_shader_gl_ver = "#version 330 core\n"; -static -struct vg_shader -{ - GLuint id; - const char *name; +typedef struct vg_shader vg_shader; - struct vg_subshader +struct +{ + struct vg_shader { - const char *orig_file, - *static_src; - } - vs, fs; + GLuint id; + const char *name; + + struct vg_subshader + { + const char *orig_file, + *static_src; + } + vs, fs; - void (*link)(void); - int compiled; + void (*link)(void); + int compiled; + } + * shaders[32]; + u32 count; } -** vg_shaders_active = NULL; -static u32 vg_shader_count, - vg_shader_cap; +static vg_shaders; -static GLuint vg_shader_subshader( const char *src, GLint gliShaderType ) +VG_STATIC GLuint vg_shader_subshader( const char *src, GLint gliShaderType ) { GLint shader = glCreateShader( gliShaderType ); @@ -64,7 +70,7 @@ static GLuint vg_shader_subshader( const char *src, GLint gliShaderType ) return shader; } -static int vg_shader_compile( struct vg_shader *shader ) +VG_STATIC int vg_shader_compile( struct vg_shader *shader ) { vg_info( "Compile shader '%s'\n", shader->name ); @@ -94,6 +100,9 @@ static int vg_shader_compile( struct vg_shader *shader ) } else { + vg_fatal_exit_loop( "Unimplemented" ); + +#if 0 char error[260]; char path[260]; strcpy( path, shader->vs.orig_file ); @@ -114,16 +123,19 @@ static int vg_shader_compile( struct vg_shader *shader ) svs = avs; sfs = afs; +#endif } vert = vg_shader_subshader( svs, GL_VERTEX_SHADER ); frag = vg_shader_subshader( sfs, GL_FRAGMENT_SHADER ); +#if 0 if( !static_src ) { - vg_free( avs ); - vg_free( afs ); + free( avs ); + free( afs ); } +#endif if( !vert || !frag ) return 0; @@ -160,7 +172,7 @@ static int vg_shader_compile( struct vg_shader *shader ) return 1; } -static void vg_free_shader( struct vg_shader *shader ) +VG_STATIC void vg_free_shader( struct vg_shader *shader ) { if( shader->compiled ) { @@ -169,55 +181,39 @@ static void vg_free_shader( struct vg_shader *shader ) } } -static void vg_shaders_free(void *nothing) -{ - for( int i=0; icompiled ) - glDeleteProgram( shader->id ); - } - - vg_free( vg_shaders_active ); -} - -static int vg_shaders_recompile(void) +VG_STATIC void vg_shaders_compile(void) { vg_info( "Compiling shaders\n" ); - for( int i=0; icompiled = 0; shader->id = 0; /* TODO: make this an error shader */ - vg_shaders_active = buffer_reserve( vg_shaders_active, vg_shader_count, - &vg_shader_cap, 1, - sizeof( struct vg_shader * ) ); - - vg_shaders_active[ vg_shader_count ++ ] = shader; + vg_shaders.shaders[ vg_shaders.count ++ ] = shader; } #endif /* VG_SHADER_H */