X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=vg%2Fvg_lines.h;h=b6f52bd385a685358b7ab3e429de9da1e460c058;hb=3363633178b1eea582304742ad1202487af0feb1;hp=81b009150b4791518087ad5cb130965229d6dc8f;hpb=666c62457411127dae8d79040dfd407e726dcff2;p=fishladder.git diff --git a/vg/vg_lines.h b/vg/vg_lines.h index 81b0091..b6f52bd 100644 --- a/vg/vg_lines.h +++ b/vg/vg_lines.h @@ -3,15 +3,15 @@ SHADER_DEFINE( vg_line_shader, // VERTEX - "layout (location=0) in vec3 a_co;" + "layout (location=0) in vec2 a_co;" "layout (location=1) in vec4 a_colour;" - "uniform mat4 uPv;" + "uniform mat3 uPv;" "" "out vec4 s_colour;" "" "void main()" "{" - " vec4 vert_pos = uPv * vec4( a_co, 1.0 );" + " vec4 vert_pos = vec4( uPv * vec3( a_co, 1.0 ), 1.0 );" " s_colour = a_colour;" " gl_Position = vert_pos;" "}", @@ -33,14 +33,13 @@ struct { struct vg_lines_vert { - vec3 co; + v2f co; u32 colour; } *buffer; GLuint vao, vbo; u32 draw_idx, cap, buffer_size; - } vg_lines; @@ -90,10 +89,10 @@ static void vg_lines_free(void) free( vg_lines.buffer ); } -static void vg_lines_drawall(void) +static void vg_lines_drawall(float* projection) { SHADER_USE( vg_line_shader ); - glUniformMatrix4fv( SHADER_UNIFORM( vg_line_shader, "uPv" ), 1, GL_FALSE, (float *)vg_pv ); + glUniformMatrix3fv( SHADER_UNIFORM( vg_line_shader, "uPv" ), 1, GL_FALSE, projection ); glBindVertexArray( vg_lines.vao ); glBindBuffer( GL_ARRAY_BUFFER, vg_lines.vbo ); @@ -109,18 +108,26 @@ static void vg_lines_drawall(void) vg_lines.draw_idx = 0; } -static void vg_line2( vec3 from, vec3 to, u32 fc, u32 tc ) +static void vg_line2( v2f from, v2f to, u32 fc, u32 tc ) { struct vg_lines_vert *v = vg_lines.buffer + vg_lines.draw_idx; - glm_vec3_copy( from, v[0].co ); - glm_vec3_copy( to, v[1].co ); + v2_copy( from, v[0].co ); + v2_copy( to, v[1].co ); v[0].colour = fc; v[1].colour = tc; vg_lines.draw_idx += 2; } -static void vg_line( vec3 from, vec3 to, u32 colour ) +static void vg_line( v2f from, v2f to, u32 colour ) { vg_line2( from, to, colour, colour ); } + +static void vg_line_box( v2f min, v2f max, u32 colour ) +{ + vg_line( min, (v2f){min[0],max[1]}, colour ); + vg_line( (v2f){min[0],max[1]}, max, colour ); + vg_line( max, (v2f){max[0],min[1]}, colour ); + vg_line( (v2f){max[0],min[1]}, min, colour ); +}