cross compile build script
[fishladder.git] / vg / vg_shader.h
index 19c1fc2644023a3108f0e68233023fe92c859f3b..ff8a5f0dc143c6126167394579fc4cced7922499 100644 (file)
@@ -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