X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=gate.h;h=6a6a0a9f91c59e37f66d38db2535850f04d88c42;hb=39378a28bc0b7c9beaf9f2191f5dc51b8c8865a0;hp=65dda90b275ced92e690c7e95654953d89dd2203;hpb=1f1d636056450dcd23cce55c0795ec6276272531;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/gate.h b/gate.h index 65dda90..6a6a0a9 100644 --- a/gate.h +++ b/gate.h @@ -11,7 +11,7 @@ typedef struct teleport_gate teleport_gate; static struct { - GLuint fb, rgb, rb, vao, vbo; + GLuint fb, rgb, rb; glmesh mdl; } grender; @@ -39,36 +39,18 @@ static void gate_register(void) shader_gate_register(); } -static void gate_init( void (*newfb)(GLuint*,GLuint*,GLuint*) ) +static void gate_init(void) { - newfb( &grender.fb, &grender.rgb, &grender.rb ); - { - float ksz = 1.0f; - float quad[] = { -ksz,-ksz,0.0f, ksz, ksz,0.0f, -ksz, ksz,0.0f, - -ksz,-ksz,0.0f, ksz,-ksz,0.0f, ksz, ksz,0.0f, - -ksz,-ksz,-0.1f, ksz, ksz,-0.1f, -ksz, ksz,-0.1f, - -ksz,-ksz,-0.1f, ksz,-ksz,-0.1f, ksz, ksz,-0.1f }; - - glGenVertexArrays( 1, &grender.vao ); - glGenBuffers( 1, &grender.vbo ); - glBindVertexArray( grender.vao ); - glBindBuffer( GL_ARRAY_BUFFER, grender.vbo ); - glBufferData( GL_ARRAY_BUFFER, sizeof(quad), quad, GL_STATIC_DRAW ); - glBindVertexArray( grender.vao ); - glVertexAttribPointer( 0, 3, GL_FLOAT, GL_FALSE, - sizeof(float)*3, (void*)0 ); - glEnableVertexAttribArray( 0 ); - VG_CHECK_GL(); - } + create_renderbuffer_std( &grender.fb, &grender.rgb, &grender.rb ); model *mgate = vg_asset_read( "models/rs_gate.mdl" ); model_unpack( mgate, &grender.mdl ); free( mgate ); } -static void gate_fb_resize( void (*resize)(GLuint*,GLuint*,GLuint*) ) +static void gate_fb_resize(void) { - resize( &grender.fb, &grender.rgb, &grender.rb ); + resize_renderbuffer_std( &grender.fb, &grender.rgb, &grender.rb ); } static void render_gate( teleport_gate *gate, m4x3f camera ) @@ -125,10 +107,7 @@ static void render_gate( teleport_gate *gate, m4x3f camera ) surface[3] = v3_dot( surface, gate->other->co ); m4x4f projection; - m4x4_projection( projection, - gpipeline.fov, - (float)vg_window_x / (float)vg_window_y, - 0.1f, 900.0f ); + pipeline_projection( projection, 0.1f, 900.0f ); #if 0 /* For debugging frustum */ { @@ -198,7 +177,7 @@ static void render_gate( teleport_gate *gate, m4x3f camera ) m4x4_mul( projection, view, projection ); - render_world( projection ); + render_world( projection, cam_new ); render_water_texture( cam_new ); glBindFramebuffer( GL_FRAMEBUFFER, grender.fb ); render_water_surface( projection ); @@ -231,9 +210,6 @@ static void render_gate( teleport_gate *gate, m4x3f camera ) mesh_draw( &grender.mdl ); glDisable(GL_BLEND); - return; - glBindVertexArray( grender.vao ); - glDrawArrays( GL_TRIANGLES, 0, 12 ); } static int gate_intersect( teleport_gate *gate, v3f pos, v3f last )