From 98a0dd6888b74de132fa936e15f5d589042e8f91 Mon Sep 17 00:00:00 2001 From: Mike Erwin Date: Wed, 22 Mar 2017 14:48:47 -0400 Subject: OpenGL: load projection matrix with new API New API does not share legacy OpenGL's concept of matrix modes. Part of T49450 --- source/blender/draw/intern/draw_manager.c | 12 ++---------- source/blender/draw/intern/draw_view.c | 4 +--- source/blender/editors/screen/glutil.c | 13 +++---------- source/blender/editors/space_view3d/view3d_draw.c | 8 ++------ source/blender/editors/space_view3d/view3d_draw_legacy.c | 5 +---- source/blender/editors/space_view3d/view3d_view.c | 4 +--- 6 files changed, 10 insertions(+), 36 deletions(-) (limited to 'source') diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index ad4678d8ee1..c9ba26824e0 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1065,11 +1065,7 @@ void DRW_draw_callbacks_pre_scene(void) struct ARegion *ar = CTX_wm_region(DST.context); RegionView3D *rv3d = CTX_wm_region_view3d(DST.context); - /* This is temporary - * waiting for the full matrix switch */ - glMatrixMode(GL_PROJECTION); - gpuLoadMatrix3D(rv3d->winmat); - glMatrixMode(GL_MODELVIEW); + gpuLoadProjectionMatrix3D(rv3d->winmat); gpuLoadMatrix3D(rv3d->viewmat); ED_region_draw_cb_draw(DST.context, ar, REGION_DRAW_PRE_VIEW); @@ -1080,11 +1076,7 @@ void DRW_draw_callbacks_post_scene(void) struct ARegion *ar = CTX_wm_region(DST.context); RegionView3D *rv3d = CTX_wm_region_view3d(DST.context); - /* This is temporary - * waiting for the full matrix switch */ - glMatrixMode(GL_PROJECTION); - gpuLoadMatrix3D(rv3d->winmat); - glMatrixMode(GL_MODELVIEW); + gpuLoadProjectionMatrix3D(rv3d->winmat); gpuLoadMatrix3D(rv3d->viewmat); ED_region_draw_cb_draw(DST.context, ar, REGION_DRAW_POST_VIEW); diff --git a/source/blender/draw/intern/draw_view.c b/source/blender/draw/intern/draw_view.c index e0a19cec7ad..2620989bcbe 100644 --- a/source/blender/draw/intern/draw_view.c +++ b/source/blender/draw/intern/draw_view.c @@ -531,9 +531,7 @@ void DRW_draw_grid(void) *(&grid_unit) = NULL; /* drawgrid need this to detect/affect smallest valid unit... */ drawgrid(&scene->unit, ar, v3d, &grid_unit); - glMatrixMode(GL_PROJECTION); - gpuLoadMatrix3D(rv3d->winmat); - glMatrixMode(GL_MODELVIEW); + gpuLoadProjectionMatrix3D(rv3d->winmat); gpuLoadMatrix3D(rv3d->viewmat); } else { diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index 0834f05706e..05572146df7 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -675,9 +675,7 @@ void glaEnd2DDraw(gla2DDrawInfo *di) { glViewport(di->orig_vp[0], di->orig_vp[1], di->orig_vp[2], di->orig_vp[3]); glScissor(di->orig_vp[0], di->orig_vp[1], di->orig_vp[2], di->orig_vp[3]); - glMatrixMode(GL_PROJECTION); - gpuLoadMatrix3D(di->orig_projmat); - glMatrixMode(GL_MODELVIEW); + gpuLoadProjectionMatrix3D(di->orig_projmat); gpuLoadMatrix3D(di->orig_viewmat); MEM_freeN(di); @@ -702,7 +700,6 @@ void bglPolygonOffset(float viewdist, float dist) // glPolygonOffset(-1.0, -1.0); /* hack below is to mimic polygon offset */ - glMatrixMode(GL_PROJECTION); gpuGetProjectionMatrix3D(winmat); /* dist is from camera to center point */ @@ -734,17 +731,13 @@ void bglPolygonOffset(float viewdist, float dist) winmat[14] -= offs; offset += offs; - - gpuLoadMatrix3D(winmat); - glMatrixMode(GL_MODELVIEW); } else { - glMatrixMode(GL_PROJECTION); winmat[14] += offset; offset = 0.0; - gpuLoadMatrix3D(winmat); - glMatrixMode(GL_MODELVIEW); } + + gpuLoadProjectionMatrix3D(winmat); } /* **** Color management helper functions for GLSL display/transform ***** */ diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 2fa154015fd..0aad272eaa4 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -207,9 +207,7 @@ static void view3d_main_region_setup_view(Scene *scene, View3D *v3d, ARegion *ar ED_view3d_update_viewmat(scene, v3d, ar, viewmat, winmat); /* set for opengl */ - glMatrixMode(GL_PROJECTION); - gpuLoadMatrix3D(rv3d->winmat); /* XXX make a gpuLoadProjectionMatrix function? */ - glMatrixMode(GL_MODELVIEW); + gpuLoadProjectionMatrix3D(rv3d->winmat); gpuLoadMatrix3D(rv3d->viewmat); } @@ -1496,9 +1494,7 @@ static void view3d_draw_grid(const bContext *C, ARegion *ar) *(&grid_unit) = NULL; /* drawgrid need this to detect/affect smallest valid unit... */ drawgrid(&scene->unit, ar, v3d, &grid_unit); - glMatrixMode(GL_PROJECTION); - gpuLoadMatrix3D(rv3d->winmat); /* XXX make a gpuLoadProjectionMatrix function? */ - glMatrixMode(GL_MODELVIEW); + gpuLoadProjectionMatrix3D(rv3d->winmat); gpuLoadMatrix3D(rv3d->viewmat); } else { diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c b/source/blender/editors/space_view3d/view3d_draw_legacy.c index 43e6742061b..3ea3214231a 100644 --- a/source/blender/editors/space_view3d/view3d_draw_legacy.c +++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c @@ -1584,10 +1584,7 @@ static void view3d_draw_objects( ED_region_pixelspace(ar); *grid_unit = NULL; /* drawgrid need this to detect/affect smallest valid unit... */ VP_legacy_drawgrid(&scene->unit, ar, v3d, grid_unit); - /* XXX make function? replaces persp(1) */ - glMatrixMode(GL_PROJECTION); - gpuLoadMatrix3D(rv3d->winmat); /* XXX make a gpuLoadProjectionMatrix function? */ - glMatrixMode(GL_MODELVIEW); + gpuLoadProjectionMatrix3D(rv3d->winmat); gpuLoadMatrix3D(rv3d->viewmat); } else if (!draw_grids_after) { diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 05915b31322..f0ea7fce0d7 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -96,9 +96,7 @@ void view3d_region_operator_needs_opengl(wmWindow *win, ARegion *ar) RegionView3D *rv3d = ar->regiondata; wmSubWindowSet(win, ar->swinid); - glMatrixMode(GL_PROJECTION); - gpuLoadMatrix3D(rv3d->winmat); - glMatrixMode(GL_MODELVIEW); + gpuLoadProjectionMatrix3D(rv3d->winmat); gpuLoadMatrix3D(rv3d->viewmat); } } -- cgit v1.2.3