#ifndef VG_SHADER_H
#define VG_SHADER_H
+#include "vg/vg.h"
+#include "vg/vg_platform.h"
+
#define STB_INCLUDE_IMPLEMENTATION
#define STB_INCLUDE_LINE_GLSL
#include "stb/stb_include.h"
return 1;
}
-static void vg_shaders_free(void)
+static void vg_free_shader( struct vg_shader *shader )
+{
+ if( shader->compiled )
+ {
+ glDeleteProgram( shader->id );
+ shader->compiled = 0;
+ }
+}
+
+static void vg_shaders_free(void *nothing)
{
for( int i = 0; i < arrlen( vg_shaders_active ); i ++ )
{
arrfree( vg_shaders_active );
}
-static int vg_shaders_recompile(int argc, const char *argv[])
+static int vg_shaders_recompile(void)
{
vg_info( "Compiling shaders\n" );
- for( int i = 0; i < arrlen( vg_shaders_active ); i ++ )
+
+ for( int i=0; i<arrlen( vg_shaders_active ); i ++ )
{
struct vg_shader *shader = vg_shaders_active[i];
- vg_shader_compile( shader );
+
+ if( !vg_shader_compile( shader ) )
+ return 0;
}
- return 0;
+ return 1;
}
static void vg_shader_register( struct vg_shader *shader )