const char *display_name;
int resolution_div, /* definition */
fixed_w,
const char *display_name;
int resolution_div, /* definition */
fixed_w,
- k_framebuffer_attachment_type_colour,
- k_framebuffer_attachment_type_renderbuffer
+ k_framebuffer_attachment_type_texture,
+ k_framebuffer_attachment_type_renderbuffer,
+ k_framebuffer_attachment_type_texture_depth
k_framebuffer_quality_all,
k_framebuffer_quality_high_only
}
k_framebuffer_quality_all,
k_framebuffer_quality_high_only
}
.quality = k_framebuffer_quality_high_only,
.internalformat = GL_RG16F,
.quality = k_framebuffer_quality_high_only,
.internalformat = GL_RG16F,
"depth_stencil", k_framebuffer_attachment_type_renderbuffer,
.internalformat = GL_DEPTH24_STENCIL8,
"depth_stencil", k_framebuffer_attachment_type_renderbuffer,
.internalformat = GL_DEPTH24_STENCIL8,
+#else
+ "depth_stencil", k_framebuffer_attachment_type_texture_depth,
+ .internalformat = GL_DEPTH24_STENCIL8,
+ .format = GL_DEPTH_STENCIL,
+ .type = GL_UNSIGNED_INT_24_8,
+#endif
.internalformat = GL_RGB,
.format = GL_RGB,
.type = GL_UNSIGNED_BYTE,
.internalformat = GL_RGB,
.format = GL_RGB,
.type = GL_UNSIGNED_BYTE,
.internalformat = GL_RED,
.format = GL_RED,
.type = GL_UNSIGNED_BYTE,
.internalformat = GL_RED,
.format = GL_RED,
.type = GL_UNSIGNED_BYTE,
- v2_div( render, original, inverse );
+ v2_div( render, original, inverse );
+ }
+ else{
+ v2_div( (v2f){1.0f,1.0f}, (v2f){ vg.window_x, vg.window_y }, inverse );
+ }
- glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, rx, ry );
+ glRenderbufferStorage( GL_RENDERBUFFER, a->internalformat, rx, ry );
{
glBindTexture( GL_TEXTURE_2D, a->id );
glTexImage2D( GL_TEXTURE_2D, 0, a->internalformat, rx, ry,
{
glBindTexture( GL_TEXTURE_2D, a->id );
glTexImage2D( GL_TEXTURE_2D, 0, a->internalformat, rx, ry,
struct framebuffer_attachment *attachment = &fb->attachments[j];
if( attachment->purpose == k_framebuffer_attachment_type_none )
struct framebuffer_attachment *attachment = &fb->attachments[j];
if( attachment->purpose == k_framebuffer_attachment_type_none )
render_fb_attachment_str( attachment->attachment ),
render_fb_format_str( attachment->internalformat ) );
render_fb_attachment_str( attachment->attachment ),
render_fb_format_str( attachment->internalformat ) );
glGenRenderbuffers( 1, &attachment->id );
render_fb_allocate_texture( fb, attachment );
glFramebufferRenderbuffer( GL_FRAMEBUFFER,
GL_DEPTH_STENCIL_ATTACHMENT,
GL_RENDERBUFFER, attachment->id );
}
glGenRenderbuffers( 1, &attachment->id );
render_fb_allocate_texture( fb, attachment );
glFramebufferRenderbuffer( GL_FRAMEBUFFER,
GL_DEPTH_STENCIL_ATTACHMENT,
GL_RENDERBUFFER, attachment->id );
}
{
glGenTextures( 1, &attachment->id );
render_fb_allocate_texture( fb, attachment );
{
glGenTextures( 1, &attachment->id );
render_fb_allocate_texture( fb, attachment );
glFramebufferTexture2D( GL_FRAMEBUFFER, attachment->attachment,
GL_TEXTURE_2D, attachment->id, 0 );
glFramebufferTexture2D( GL_FRAMEBUFFER, attachment->attachment,
GL_TEXTURE_2D, attachment->id, 0 );
if( result == GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT )
vg_error( " status: Incomplete attachment" );
else if( result == GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT )
if( result == GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT )
vg_error( " status: Incomplete attachment" );
else if( result == GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT )
struct framebuffer_attachment *attachment = &fb->attachments[j];
render_fb_allocate_texture( fb, attachment );
}
struct framebuffer_attachment *attachment = &fb->attachments[j];
render_fb_allocate_texture( fb, attachment );
}
0.00f,0.00f, 1.00f,1.00f, 0.00f,1.00f,
0.00f,0.00f, 1.00f,0.00f, 1.00f,1.00f,
0.00f,0.00f, 1.00f,1.00f, 0.00f,1.00f,
0.00f,0.00f, 1.00f,0.00f, 1.00f,1.00f,
0.60f,0.60f, 0.90f,0.60f, 0.90f,0.90f,
};
0.60f,0.60f, 0.90f,0.60f, 0.90f,0.90f,
};
- vg_function_push( (struct vg_cmd)
- {
- .name = "fb",
- .function = render_framebuffer_control,
- .poll_suggest = render_framebuffer_poll
- });
+ vg_console_reg_cmd( "fb", render_framebuffer_control,
+ render_framebuffer_poll );
glGenVertexArrays( 1, &gpipeline.fsquad.vao );
glGenBuffers( 1, &gpipeline.fsquad.vbo );
glGenVertexArrays( 1, &gpipeline.fsquad.vao );
glGenBuffers( 1, &gpipeline.fsquad.vbo );
struct framebuffer_attachment *at = &fb->attachments[j];
if( at->purpose == k_framebuffer_attachment_type_none )
continue;
struct framebuffer_attachment *at = &fb->attachments[j];
if( at->purpose == k_framebuffer_attachment_type_none )
continue;
if( argc == 2 )
render_framebuffer_show( fb, at, operation );
else if( !strcmp( at->display_name, argv[2] ) )
if( argc == 2 )
render_framebuffer_show( fb, at, operation );
else if( !strcmp( at->display_name, argv[2] ) )
console_suggest_score_text( "show", term, 0 );
console_suggest_score_text( "hide", term, 0 );
}
console_suggest_score_text( "show", term, 0 );
console_suggest_score_text( "hide", term, 0 );
}
struct framebuffer *fb = &framebuffers[i];
console_suggest_score_text( fb->display_name, term, 0 );
}
}
struct framebuffer *fb = &framebuffers[i];
console_suggest_score_text( fb->display_name, term, 0 );
}
}
struct framebuffer_attachment *at = &fb->attachments[j];
if( at->purpose == k_framebuffer_attachment_type_none )
continue;
struct framebuffer_attachment *at = &fb->attachments[j];
if( at->purpose == k_framebuffer_attachment_type_none )
continue;