the better walkgrid
[carveJwlIkooP6JGAAIwe30JlM.git] / gate.h
diff --git a/gate.h b/gate.h
index 65dda90b275ced92e690c7e95654953d89dd2203..6a6a0a9f91c59e37f66d38db2535850f04d88c42 100644 (file)
--- 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 )