[Bf-blender-cvs] [d119166] GPU_data_request: draw camera in 1 GL call (2 for active cam)
Mike Erwin
noreply at git.blender.org
Mon Mar 30 02:51:15 CEST 2015
Commit: d119166464b98548d9d25fa202d6ada61734f085
Author: Mike Erwin
Date: Sun Mar 29 01:51:13 2015 -0400
Branches: GPU_data_request
https://developer.blender.org/rBd119166464b98548d9d25fa202d6ada61734f085
draw camera in 1 GL call (2 for active cam)
===================================================================
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 2c3f1db..3178560 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -1943,35 +1943,18 @@ static void drawcamera_new(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *
if (is_view) {
/* camera frame */
- glBegin(GL_LINE_LOOP);
- glArrayElement(0);
- glArrayElement(1);
- glArrayElement(2);
- glArrayElement(3);
- glEnd();
+ glDrawArrays(GL_LINE_LOOP, 0, 4);
}
else {
int i;
- /* camera frame (minus top segment) */
- glBegin(GL_LINE_STRIP);
- glArrayElement(0);
- glArrayElement(1);
- glArrayElement(2);
- glArrayElement(3);
- glEnd();
-
- /* center point to camera frame */
- zero_v3(vec[4]);
+ const GLubyte line_indices[] = {
+ 0,1, 1,2, 2,3, 3,0, /* camera frame */
+ 0,4, 1,4, 2,4, 3,4, /* center point to camera frame */
+ 5,6, 6,7, 7,5 /* arrow on top */
+ };
- glBegin(GL_LINE_STRIP);
- glArrayElement(1);
- glArrayElement(4);
- glArrayElement(0);
- glArrayElement(3);
- glArrayElement(4);
- glArrayElement(2);
- glEnd();
+ zero_v3(vec[4]); /* center point */
/* arrow on top */
{
@@ -1991,22 +1974,14 @@ static void drawcamera_new(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *
copy_v3_v3(vec[7], tvec); /* left */
}
+ glDrawElements(GL_LINES, 22, GL_UNSIGNED_BYTE, line_indices);
+
/* draw an outline arrow for inactive cameras and filled
* for active cameras. We actually draw both outline+filled
* for active cameras so the wire can be seen side-on */
- for (i = 0; i < 2; i++) {
- if (i == 0) glBegin(GL_LINE_LOOP);
- else if (i == 1 && (ob == v3d->camera)) {
- glDisable(GL_CULL_FACE); /* TODO: use new state tracking instead (draw front AND back) */
- glBegin(GL_TRIANGLES);
- }
- else break;
-
- glArrayElement(5);
- glArrayElement(6);
- glArrayElement(7);
-
- glEnd();
+ if (ob == v3d->camera) {
+ glDisable(GL_CULL_FACE); /* TODO: use new state tracking instead (draw front AND back) */
+ glDrawArrays(GL_TRIANGLES, 5, 3);
}
#if 0 /* TODO: revisit later */
More information about the Bf-blender-cvs
mailing list