#define STB_INCLUDE_IMPLEMENTATION
#define STB_INCLUDE_LINE_GLSL
+#define STB_MALLOC vg_alloc
+#define STB_FREE vg_free
+#define STB_REALLOC vg_realloc
#include "stb/stb_include.h"
const char *vg_shader_gl_ver = "#version 330 core\n";
+static
struct vg_shader
{
GLuint id;
int compiled;
}
** vg_shaders_active = NULL;
+static u32 vg_shader_count,
+ vg_shader_cap;
static GLuint vg_shader_subshader( const char *src, GLint gliShaderType )
{
vg_error( "Could not find shader source files (%s)\n",
shader->vs.orig_file );
- free( avs );
- free( afs );
+ vg_free( avs );
+ vg_free( afs );
return 0;
}
if( !static_src )
{
- free( avs );
- free( afs );
+ vg_free( avs );
+ vg_free( afs );
}
if( !vert || !frag )
static void vg_shaders_free(void *nothing)
{
- for( int i = 0; i < arrlen( vg_shaders_active ); i ++ )
+ for( int i=0; i<vg_shader_count; i ++ )
{
struct vg_shader *shader = vg_shaders_active[i];
glDeleteProgram( shader->id );
}
- arrfree( vg_shaders_active );
+ vg_free( vg_shaders_active );
}
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<vg_shader_count; i ++ )
{
struct vg_shader *shader = vg_shaders_active[i];
{
shader->compiled = 0;
shader->id = 0; /* TODO: make this an error shader */
- arrpush( vg_shaders_active, 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;
}
#endif /* VG_SHADER_H */