added low_memory_2d_mode, to indicate when 3D post processing buffers and viewport depth buffers should not be allocated

This commit is contained in:
romulox_x 2015-10-21 19:23:34 -07:00
parent 6426ea61d7
commit b86e3c3402
2 changed files with 14 additions and 5 deletions

View file

@ -4075,6 +4075,8 @@ void RasterizerGLES2::render_target_set_size(RID p_render_target,int p_width,int
glDeleteTextures(1,&rt->color);
rt->fbo=0;
rt->depth=0;
rt->color=0;
rt->width=0;
rt->height=0;
rt->texture_ptr->tex_id=0;
@ -4094,12 +4096,14 @@ void RasterizerGLES2::render_target_set_size(RID p_render_target,int p_width,int
glBindFramebuffer(GL_FRAMEBUFFER, rt->fbo);
//depth
glGenRenderbuffers(1, &rt->depth);
glBindRenderbuffer(GL_RENDERBUFFER, rt->depth );
if (!low_memory_2d) {
glGenRenderbuffers(1, &rt->depth);
glBindRenderbuffer(GL_RENDERBUFFER, rt->depth );
glRenderbufferStorage(GL_RENDERBUFFER, use_depth24?_DEPTH_COMPONENT24_OES:GL_DEPTH_COMPONENT16, rt->width,rt->height);
glRenderbufferStorage(GL_RENDERBUFFER, use_depth24?_DEPTH_COMPONENT24_OES:GL_DEPTH_COMPONENT16, rt->width,rt->height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->depth);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->depth);
}
//color
glGenTextures(1, &rt->color);
@ -10293,7 +10297,11 @@ void RasterizerGLES2::_update_framebuffer() {
framebuffer.fbo=0;
}
#ifdef TOOLS_ENABLED
framebuffer.active=use_fbo;
#else
framebuffer.active=use_fbo && !low_memory_2d;
#endif
framebuffer.width=dwidth;
framebuffer.height=dheight;
framebuffer.scale=scale;
@ -11203,6 +11211,7 @@ RasterizerGLES2::RasterizerGLES2(bool p_compress_arrays,bool p_keep_ram_copy,boo
use_fp16_fb=bool(GLOBAL_DEF("rasterizer/fp16_framebuffer",true));
use_shadow_mapping=true;
use_fast_texture_filter=!bool(GLOBAL_DEF("rasterizer/trilinear_mipmap_filter",true));
low_memory_2d=bool(GLOBAL_DEF("rasterizer/low_memory_2d_mode",false));
skel_default.resize(1024*4);
for(int i=0;i<1024/3;i++) {

View file

@ -105,7 +105,7 @@ class RasterizerGLES2 : public Rasterizer {
float anisotropic_level;
bool use_half_float;
bool low_memory_2d;
Vector<float> skel_default;