X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=gate.h;h=7088c7dc5c236dc03223e5b3948904a6011278d0;hb=dfee9022b3513fddec36f7ea70867ee5961a44da;hp=6e9b95f9b8d27fcebe255fe496d1a52b78cda74b;hpb=1656d58a7bd17df4a1edcc9677ade4dbafc82229;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/gate.h b/gate.h index 6e9b95f..7088c7d 100644 --- a/gate.h +++ b/gate.h @@ -13,16 +13,20 @@ typedef struct teleport_gate teleport_gate; static struct { - GLuint fb, rgb, rb; + struct framebuffer fb; glmesh mdl; int high_qual; /* If in high performance mode, we don't use RT's, and - instead use stencil buffers. - There is therefore no heat warp effect. */ + instead use stencil buffers. + There is therefore no heat warp effect. */ } grender = { - .high_qual = 0 + .high_qual = 0, + .fb = { + .format = GL_RGB, + .div = 1 + } }; struct teleport_gate @@ -56,7 +60,7 @@ static void gate_register(void) static void gate_init(void) { - create_renderbuffer_std( &grender.fb, &grender.rgb, &grender.rb ); + fb_init( &grender.fb ); model *mgate = vg_asset_read( "models/rs_gate.mdl" ); model_unpack( mgate, &grender.mdl ); @@ -65,7 +69,7 @@ static void gate_init(void) static void gate_fb_resize(void) { - resize_renderbuffer_std( &grender.fb, &grender.rgb, &grender.rb ); + fb_resize( &grender.fb ); } static void render_gate( teleport_gate *gate, m4x3f camera ) @@ -129,7 +133,7 @@ static void render_gate( teleport_gate *gate, m4x3f camera ) if( grender.high_qual ) { - glBindFramebuffer( GL_FRAMEBUFFER, grender.fb ); + fb_use( &grender.fb ); glClearColor( 0.11f, 0.35f, 0.37f, 1.0f ); glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ); } @@ -167,17 +171,18 @@ static void render_gate( teleport_gate *gate, m4x3f camera ) */ render_water_texture( cam_new ); - glBindFramebuffer( GL_FRAMEBUFFER, grender.fb ); - render_water_surface( projection ); - glBindFramebuffer( GL_FRAMEBUFFER, 0 ); + fb_use( &grender.fb ); + + render_water_surface( projection, cam_new ); + fb_use( NULL ); shader_gate_use(); shader_gate_uPv( vg_pv ); shader_gate_uMdl( gate_xform ); - glActiveTexture( GL_TEXTURE0 ); - glBindTexture( GL_TEXTURE_2D, grender.rgb ); + fb_bindtex( &grender.fb, 0 ); + shader_gate_uCam( viewpos ); shader_gate_uTexMain( 0 ); shader_gate_uTexWater( 1 );