projects
/
vg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
medium sized dollop
[vg.git]
/
src
/
vg
/
vg_shader.h
diff --git
a/src/vg/vg_shader.h
b/src/vg/vg_shader.h
index 3cad2356b1d35077027c1d983f87bda576ae5b4c..a6c7a0b13ff4723e86927dd3d15e04513225fb4c 100644
(file)
--- a/
src/vg/vg_shader.h
+++ b/
src/vg/vg_shader.h
@@
-3,6
+3,9
@@
#ifndef VG_SHADER_H
#define VG_SHADER_H
#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"
#define STB_INCLUDE_IMPLEMENTATION
#define STB_INCLUDE_LINE_GLSL
#include "stb/stb_include.h"
@@
-151,7
+154,16
@@
static int vg_shader_compile( struct vg_shader *shader )
return 1;
}
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 ++ )
{
{
for( int i = 0; i < arrlen( vg_shaders_active ); i ++ )
{
@@
-164,16
+176,19
@@
static void vg_shaders_free(void)
arrfree( vg_shaders_active );
}
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" );
{
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];
{
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 )
}
static void vg_shader_register( struct vg_shader *shader )