X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=vg%2Fvg_shader.h;h=ff8a5f0dc143c6126167394579fc4cced7922499;hb=313de221328d756742ddc6f52386d9ddae067e7c;hp=19c1fc2644023a3108f0e68233023fe92c859f3b;hpb=79c56f6fa4b07352dd7cce8627246f04508955a7;p=fishladder.git diff --git a/vg/vg_shader.h b/vg/vg_shader.h index 19c1fc2..ff8a5f0 100644 --- a/vg/vg_shader.h +++ b/vg/vg_shader.h @@ -19,8 +19,11 @@ static inline int static_str_index( const char *list[], int len, const char *str } #pragma GCC diagnostic pop -#define SHADER_UNIFORM( NAME, U ) NAME##_auto_uniforms[ STR_STATIC_INDEX( NAME##_auto_names, U ) ] -#define SHADER_UNIFORM_NAME( NAME, UID ) NAME##_auto_names[ UID ] +#define SHADER_NAME( NAME ) (NAME##_static_shader.program) +#define SHADER_USE( NAME ) glUseProgram( NAME##_static_shader.program ) + +#define SHADER_UNIFORM( NAME, U ) NAME##_shader_uniforms[ STR_STATIC_INDEX( NAME##_shader_names, U ) ] +#define SHADER_UNIFORM_NAME( NAME, UID ) NAME##_shader_names[ UID ] #define STR_STATIC_INDEX( LIST, STR ) static_str_index( LIST, vg_list_size(LIST), STR ) #define UNIFORMS(...) __VA_ARGS__ @@ -81,7 +84,7 @@ static int vg_shader_compile( struct vg_shader *shader ) { vg_info( "Compile shader '%s'\n", shader->sym ); - GLuint vert, frag, geo; + GLuint vert, frag, geo = 0; vert = vg_shader_subshader( shader->src_vert, GL_VERTEX_SHADER ); frag = vg_shader_subshader( shader->src_frag, GL_FRAGMENT_SHADER ); @@ -98,7 +101,7 @@ static int vg_shader_compile( struct vg_shader *shader ) } shader->program = glCreateProgram(); - if( shader->src_geo ) + if( geo ) glAttachShader( shader->program, geo ); glAttachShader( shader->program, vert ); @@ -108,7 +111,7 @@ static int vg_shader_compile( struct vg_shader *shader ) glDeleteShader( vert ); glDeleteShader( frag ); - if( shader->src_geo ) + if( geo ) glDeleteShader( geo ); // Check for link errors