stuff
[carveJwlIkooP6JGAAIwe30JlM.git] / gate.h
diff --git a/gate.h b/gate.h
index 6e9b95f9b8d27fcebe255fe496d1a52b78cda74b..7088c7dc5c236dc03223e5b3948904a6011278d0 100644 (file)
--- 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 );