[Bf-blender-cvs] [fcb2b87] GPU_data_request: draw camera using vertex array
Mike Erwin
noreply at git.blender.org
Mon Mar 30 02:51:14 CEST 2015
Commit: fcb2b879321cb7b843c01cca01463f0c6beda051
Author: Mike Erwin
Date: Sun Mar 29 01:26:00 2015 -0400
Branches: GPU_data_request
https://developer.blender.org/rBfcb2b879321cb7b843c01cca01463f0c6beda051
draw camera using vertex array
===================================================================
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 1f4dc0f..2c3f1db 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -1936,15 +1936,18 @@ static void drawcamera_new(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *
BKE_camera_view_frame_ex(scene, cam, cam->drawsize, is_view, scale,
asp, shift, &drawsize, vec);
- glDisable(GL_LIGHTING); /* use new state tracking instead */
+ glDisable(GL_LIGHTING); /* TODO: use new state tracking instead */
+
+ glEnableClientState(GL_VERTEX_ARRAY); /* vertex here means vertex position */
+ glVertexPointer(3, GL_FLOAT, 3 * sizeof(float), vec);
if (is_view) {
/* camera frame */
glBegin(GL_LINE_LOOP);
- glVertex3fv(vec[0]);
- glVertex3fv(vec[1]);
- glVertex3fv(vec[2]);
- glVertex3fv(vec[3]);
+ glArrayElement(0);
+ glArrayElement(1);
+ glArrayElement(2);
+ glArrayElement(3);
glEnd();
}
else {
@@ -1952,22 +1955,22 @@ static void drawcamera_new(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *
/* camera frame (minus top segment) */
glBegin(GL_LINE_STRIP);
- glVertex3fv(vec[0]);
- glVertex3fv(vec[1]);
- glVertex3fv(vec[2]);
- glVertex3fv(vec[3]);
+ glArrayElement(0);
+ glArrayElement(1);
+ glArrayElement(2);
+ glArrayElement(3);
glEnd();
/* center point to camera frame */
zero_v3(vec[4]);
glBegin(GL_LINE_STRIP);
- glVertex3fv(vec[1]);
- glVertex3fv(vec[4]);
- glVertex3fv(vec[0]);
- glVertex3fv(vec[3]);
- glVertex3fv(vec[4]);
- glVertex3fv(vec[2]);
+ glArrayElement(1);
+ glArrayElement(4);
+ glArrayElement(0);
+ glArrayElement(3);
+ glArrayElement(4);
+ glArrayElement(2);
glEnd();
/* arrow on top */
@@ -1994,14 +1997,14 @@ static void drawcamera_new(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *
for (i = 0; i < 2; i++) {
if (i == 0) glBegin(GL_LINE_LOOP);
else if (i == 1 && (ob == v3d->camera)) {
- glDisable(GL_CULL_FACE); /* use new state tracking instead (draw front AND back) */
+ glDisable(GL_CULL_FACE); /* TODO: use new state tracking instead (draw front AND back) */
glBegin(GL_TRIANGLES);
}
else break;
- glVertex3fv(vec[5]);
- glVertex3fv(vec[6]);
- glVertex3fv(vec[7]);
+ glArrayElement(5);
+ glArrayElement(6);
+ glArrayElement(7);
glEnd();
}
@@ -2036,6 +2039,7 @@ static void drawcamera_new(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *
}
#endif
}
+ glDisableClientState(GL_VERTEX_ARRAY);
}
More information about the Bf-blender-cvs
mailing list