static void parse_uniform_name( char *start, struct uniform *uf )
{
uf->array = 0;
+ int type_set = 0;
+
for( int i=0;; i++ )
{
if( start[i] == '\0' )
if( start[i] == ';' )
{
start[i] = '\0';
- strncpy( uf->name, start, sizeof(uf->name) );
+ vg_strncpy( start, uf->name, sizeof(uf->name),
+ k_strncpy_always_add_null );
}
if( start[i] == '[' )
{
start[i] = '\0';
- strncpy( uf->name, start, sizeof(uf->name) );
+ vg_strncpy( start, uf->name, sizeof(uf->name),
+ k_strncpy_always_add_null );
uf->array = 1;
}
if( start[i] == ' ' )
{
start[i] = '\0';
- strncpy( uf->type, start, sizeof(uf->type) );
+
+ if( !type_set )
+ {
+ vg_strncpy( start, uf->type, sizeof(uf->type),
+ k_strncpy_always_add_null );
+ type_set = 1;
+ }
start = start+i+1;
i=0;
}
else
{
fprintf( header, "{\n"
- ".static_src = \n" );
+ ".orig_file = \"%s\",\n"
+ ".static_src = \n",
+ name );
char *cur = full, *start = full;
while( 1 )
types[] =
{
{ "float", "float f", "glUniform1f(%s,f);" },
+ { "bool", "int b", "glUniform1i(%s,b);" },
{ "vec2", "v2f v", "glUniform2fv(%s,1,v);" },
{ "vec3", "v3f v", "glUniform3fv(%s,1,v);" },
{ "vec4", "v4f v", "glUniform4fv(%s,1,v);" },
{ "sampler2D", "int i", "glUniform1i(%s,i);" },
+ { "samplerCube", "int i", "glUniform1i(%s,i);" },
{ "mat4x3", "m4x3f m", "glUniformMatrix4x3fv(%s,1,GL_FALSE,(float*)m);" },
{ "mat3", "m3x3f m", "glUniformMatrix3fv(%s,1,GL_FALSE,(float*)m);" },
{ "mat4", "m4x4f m", "glUniformMatrix4fv(%s,1,GL_FALSE,(float*)m);" },
for( int i=0; i<vg_shaderbuild.uniform_count; i++ )
{
struct uniform *uf = &vg_shaderbuild.uniform_buffer[i];
- if( uf->array ) continue;
+ if( uf->array )
+ continue;
for( int j=0; j<vg_list_size(types); j ++ )
{