Commit: 625f1a1c3058dd64a0814ba075b12ba0c5b28fcb Author: Mike Erwin Date: Tue Oct 18 20:57:36 2016 -0400 Branches: blender2.8 https://developer.blender.org/rB625f1a1c3058dd64a0814ba075b12ba0c5b28fcb
OpenGL: draw cameras using new matrix API Also removed some extra push/pops. Ref T49450 =================================================================== M source/blender/editors/space_view3d/drawobject.c =================================================================== diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index b41d4b2..5dfbfc4 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -90,6 +90,7 @@ #include "GPU_basic_shader.h" #include "GPU_shader.h" #include "GPU_immediate.h" +#include "GPU_matrix.h" #include "ED_mesh.h" #include "ED_screen.h" @@ -1902,15 +1903,13 @@ static void drawcamera_stereo3d( /* caller bound GPU_SHADER_3D_UNIFORM_COLOR, passed in pos attribute ID */ - glPushMatrix(); - for (int i = 0; i < 2; i++) { ob = BKE_camera_multiview_render(scene, ob, names[i]); cam_lr[i] = ob->data; - glLoadMatrixf(rv3d->viewmat); + gpuLoadMatrix3D(rv3d->viewmat); BKE_camera_multiview_model_matrix(&scene->r, ob, names[i], obmat); - glMultMatrixf(obmat); + gpuMultMatrix3D(obmat); copy_m3_m3(vec_lr[i], vec); copy_v3_v3(vec_lr[i][3], vec[3]); @@ -1945,7 +1944,7 @@ static void drawcamera_stereo3d( } /* the remaining drawing takes place in the view space */ - glLoadMatrixf(rv3d->viewmat); + gpuLoadMatrix3D(rv3d->viewmat); if (is_stereo3d_cameras) { /* draw connecting lines */ @@ -2042,8 +2041,6 @@ static void drawcamera_stereo3d( } } } - - glPopMatrix(); } /* flag similar to draw_object() */ @@ -2111,6 +2108,8 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base BKE_camera_view_frame_ex(scene, cam, cam->drawsize, is_view, scale, asp, shift, &drawsize, vec); + gpuMatrixBegin3D_legacy(); + unsigned pos = add_attrib(immVertexFormat(), "pos", GL_FLOAT, 3, KEEP_FLOAT); immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR); if (ob_wire_col) { @@ -2126,13 +2125,13 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base float obmat[4][4]; bool is_left = v3d->multiview_eye == STEREO_LEFT_ID; - glPushMatrix(); - glLoadMatrixf(rv3d->viewmat); + gpuPushMatrix(); + gpuLoadMatrix3D(rv3d->viewmat); BKE_camera_multiview_model_matrix(&scene->r, ob, is_left ? STEREO_LEFT_NAME : STEREO_RIGHT_NAME, obmat); - glMultMatrixf(obmat); + gpuMultMatrix3D(obmat); drawcamera_frame(vec, false, pos); - glPopMatrix(); + gpuPopMatrix(); } else { drawcamera_frame(vec, false, pos); @@ -2141,6 +2140,7 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base if (is_view) { immUnbindProgram(); + gpuMatrixEnd(); return; } @@ -2183,9 +2183,8 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base copy_m4_m4(nobmat, ob->obmat); normalize_m4(nobmat); - glPushMatrix(); - glLoadMatrixf(rv3d->viewmat); - glMultMatrixf(nobmat); + gpuLoadMatrix3D(rv3d->viewmat); + gpuMultMatrix3D(nobmat); if (cam->flag & CAM_SHOWLIMITS) { const unsigned char col[3] = {128, 128, 60}, col_hi[3] = {255, 255, 120}; @@ -2204,7 +2203,6 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base dflag, (is_active ? col_hi : col), pos); } } - glPopMatrix(); } } @@ -2214,6 +2212,7 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base } immUnbindProgram(); + gpuMatrixEnd(); } /* flag similar to draw_object() */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs