diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-03-08 22:00:09 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-03-09 03:30:26 +0300 |
commit | 3b91989a093aef874b601efcffd247cf61e73bad (patch) | |
tree | f5e8df6b3aad70c71e8002c0e3775b768dbd22fc /source/blender/editors/space_view3d/view3d_draw.c | |
parent | d9f42e5fab6a13ce200665b9a89291aa34ff6c09 (diff) |
Draw Manager: structural change
All engines are now called by the draw manager. Engines are separate entities that cannot interfer with each others.
Also separated draw_mode_pass.c into the mode engines.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_draw.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index f41d7d68288..21d07761cf5 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -60,6 +60,8 @@ #include "DNA_view3d_types.h" #include "DNA_windowmanager_types.h" +#include "DRW_engine.h" + #include "ED_keyframing.h" #include "ED_armature.h" #include "ED_keyframing.h" @@ -2330,34 +2332,18 @@ static void view3d_draw_view(const bContext *C, ARegion *ar, DrawData *draw_data #endif } -static void view3d_render_pass(const bContext *C, ARegion *UNUSED(ar)) -{ - Scene *scene = CTX_data_scene(C); - RenderEngineType *type = RE_engines_find(scene->r.engine); /* In the future we should get that from Layers */ - - if (type->flag & RE_USE_OGL_PIPELINE) { - type->view_draw(NULL, C); - } - else { - // Offline Render engine - } -} - static void view3d_draw_view_new(const bContext *C, ARegion *ar, DrawData *UNUSED(draw_data)) { - view3d_draw_setup_view(C, ar); /* Only 100% compliant on new spec goes bellow */ - view3d_render_pass(C, ar); + DRW_draw_view(C); } - void view3d_main_region_draw(const bContext *C, ARegion *ar) { Scene *scene = CTX_data_scene(C); View3D *v3d = CTX_wm_view3d(C); - int mode = CTX_data_mode_enum(C); RegionView3D *rv3d = ar->regiondata; /* TODO layers - In the future we should get RE from Layers */ RenderEngineType *type = RE_engines_find(scene->r.engine); @@ -2370,21 +2356,19 @@ void view3d_main_region_draw(const bContext *C, ARegion *ar) if (!rv3d->viewport) rv3d->viewport = GPU_viewport_create(); - GPU_viewport_bind(rv3d->viewport, &ar->winrct, scene->r.engine, mode); - /* TODO viewport - there is so much to be done, in fact a lot will need to happen in the space_view3d.c * before we even call the drawing routine, but let's move on for now (dfelinto) * but this is a provisory way to start seeing things in the viewport */ DrawData draw_data; view3d_draw_data_init(C, ar, rv3d, &draw_data); + GPU_viewport_bind(rv3d->viewport, &ar->winrct); + if (type->flag & RE_USE_OGL_PIPELINE) view3d_draw_view_new(C, ar, &draw_data); else view3d_draw_view(C, ar, &draw_data); - GPU_viewport_unbind(rv3d->viewport); - v3d->flag |= V3D_INVALID_BACKBUF; } |