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
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 );
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 )
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 );
}
*/
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 );