diff options
| author | Juan Linietsky | 2015-02-21 10:41:53 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2015-02-21 10:41:53 -0300 |
| commit | 57183a778367b1b6e846e188ce3549c6f6c4fea9 (patch) | |
| tree | 4789b091847c52c1536b2c939e9decc7c50ca44d /servers/visual/visual_server_raster.cpp | |
| parent | 31e076d16affca682e956c966c0a8f9218a2b192 (diff) | |
| parent | f4312a5076061862908c6df732157d452c2d37b8 (diff) | |
| download | godot-57183a778367b1b6e846e188ce3549c6f6c4fea9.tar.gz godot-57183a778367b1b6e846e188ce3549c6f6c4fea9.tar.zst godot-57183a778367b1b6e846e188ce3549c6f6c4fea9.zip | |
Merge pull request #1410 from romulox-x/viewport_clear
added option to disable automatic clearing of viewport render buffer
Diffstat (limited to 'servers/visual/visual_server_raster.cpp')
| -rw-r--r-- | servers/visual/visual_server_raster.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index cef6fe567..4c12ac967 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -1576,6 +1576,15 @@ void VisualServerRaster::viewport_set_render_target_vflip(RID p_viewport,bool p_ } +void VisualServerRaster::viewport_set_render_target_clear_on_new_frame(RID p_viewport,bool p_enable) { + + Viewport *viewport = viewport_owner.get( p_viewport ); + ERR_FAIL_COND(!viewport); + + viewport->render_target_clear_on_new_frame=p_enable; + +} + void VisualServerRaster::viewport_set_render_target_to_screen_rect(RID p_viewport,const Rect2& p_rect) { Viewport *viewport = viewport_owner.get( p_viewport ); @@ -1594,6 +1603,23 @@ bool VisualServerRaster::viewport_get_render_target_vflip(RID p_viewport) const{ } +bool VisualServerRaster::viewport_get_render_target_clear_on_new_frame(RID p_viewport) const{ + + const Viewport *viewport = viewport_owner.get( p_viewport ); + ERR_FAIL_COND_V(!viewport,false); + + return viewport->render_target_clear_on_new_frame; + +} + +void VisualServerRaster::viewport_render_target_clear(RID p_viewport) { + + Viewport *viewport = viewport_owner.get( p_viewport ); + ERR_FAIL_COND(!viewport); + + viewport->render_target_clear=true; + +} void VisualServerRaster::viewport_queue_screen_capture(RID p_viewport) { @@ -6605,7 +6631,10 @@ void VisualServerRaster::_draw_viewport(Viewport *p_viewport,int p_ofs_x, int p_ } else if (true /*|| !p_viewport->canvas_list.empty()*/){ //clear the viewport black because of no camera? i seriously should.. - rasterizer->clear_viewport(clear_color); + if (p_viewport->render_target_clear_on_new_frame || p_viewport->render_target_clear) { + rasterizer->clear_viewport(clear_color); + p_viewport->render_target_clear=false; + } } if (!p_viewport->hide_canvas) { |
