Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/editors/interface/interface_widgets.c28
-rw-r--r--source/blender/editors/space_view3d/drawobject.c123
2 files changed, 52 insertions, 99 deletions
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 279572f82d1..e62018c5daf 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -739,18 +739,18 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
wcol->outline[1],
wcol->outline[2],
wcol->outline[3] / WIDGET_AA_JITTER};
+ unsigned char emboss[4];
widget_verts_to_triangle_strip(wtb, wtb->totvert, triangle_strip);
if (wtb->draw_emboss) {
widget_verts_to_triangle_strip_open(wtb, wtb->halfwayvert, triangle_strip_emboss);
+ UI_GetThemeColor4ubv(TH_WIDGET_EMBOSS, emboss);
}
glEnableClientState(GL_VERTEX_ARRAY);
for (j = 0; j < WIDGET_AA_JITTER; j++) {
- unsigned char emboss[4];
-
glTranslate2fv(jit[j]);
/* outline */
@@ -761,8 +761,6 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
/* emboss bottom shadow */
if (wtb->draw_emboss) {
- UI_GetThemeColor4ubv(TH_WIDGET_EMBOSS, emboss);
-
if (emboss[3]) {
glColor4ubv(emboss);
glVertexPointer(2, GL_FLOAT, 0, triangle_strip_emboss);
@@ -782,19 +780,17 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
wcol->item[1],
wcol->item[2],
(unsigned char)((float)wcol->item[3] / WIDGET_AA_JITTER)};
+ glColor4ubv(tcol);
/* for each AA step */
for (j = 0; j < WIDGET_AA_JITTER; j++) {
glTranslate2fv(jit[j]);
- if (wtb->tria1.tot) {
- glColor4ubv(tcol);
+ if (wtb->tria1.tot)
widget_trias_draw(&wtb->tria1);
- }
- if (wtb->tria2.tot) {
- glColor4ubv(tcol);
+
+ if (wtb->tria2.tot)
widget_trias_draw(&wtb->tria2);
- }
glTranslatef(-jit[j][0], -jit[j][1], 0.0f);
}
@@ -2623,12 +2619,12 @@ static void ui_draw_but_HSV_v(uiBut *but, const rcti *rect)
static void ui_draw_separator(const rcti *rect, uiWidgetColors *wcol)
{
int y = rect->ymin + BLI_rcti_size_y(rect) / 2 - 1;
- unsigned char col[4];
-
- col[0] = wcol->text[0];
- col[1] = wcol->text[1];
- col[2] = wcol->text[2];
- col[3] = 30;
+ unsigned char col[4] = {
+ wcol->text[0],
+ wcol->text[1],
+ wcol->text[2],
+ 30
+ };
glEnable(GL_BLEND);
glColor4ubv(col);
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 70066560e7a..3dd846803ee 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -215,7 +215,7 @@ static void drawcube_size(float size);
static void drawcircle_size(float size);
static void draw_empty_sphere(float size);
static void draw_empty_cone(float size);
-static void draw_box(float vec[8][3], bool solid);
+static void draw_box(const float vec[8][3], bool solid);
static void ob_wire_color_blend_theme_id(const unsigned char ob_wire_col[4], const int theme_id, float fac)
{
@@ -933,59 +933,24 @@ void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, bool depth_write, flo
*/
static void drawcube_size(float size)
{
- glBegin(GL_LINE_STRIP);
- glVertex3f(-size, -size, -size); glVertex3f(-size, -size, size);
- glVertex3f(-size, size, size); glVertex3f(-size, size, -size);
-
- glVertex3f(-size, -size, -size); glVertex3f(size, -size, -size);
- glVertex3f(size, -size, size); glVertex3f(size, size, size);
-
- glVertex3f(size, size, -size); glVertex3f(size, -size, -size);
- glEnd();
-
- glBegin(GL_LINE_STRIP);
- glVertex3f(-size, -size, size); glVertex3f(size, -size, size);
- glEnd();
-
- glBegin(GL_LINE_STRIP);
- glVertex3f(-size, size, size); glVertex3f(size, size, size);
- glEnd();
-
- glBegin(GL_LINE_STRIP);
- glVertex3f(-size, size, -size); glVertex3f(size, size, -size);
- glEnd();
-}
-
-/* this is an unused (old) cube-drawing function based on a given size */
-#if 0
-static void drawcube_size(const float size[3])
-{
-
- glPushMatrix();
- glScale3fv(size);
-
+ const GLfloat pos[8][3] = {
+ {-size, -size, -size},
+ {-size, -size, size},
+ {-size, size, -size},
+ {-size, size, size},
+ { size, -size, -size},
+ { size, -size, size},
+ { size, size, -size},
+ { size, size, size}
+ };
- glBegin(GL_LINE_STRIP);
- glVertex3fv(cube[0]); glVertex3fv(cube[1]); glVertex3fv(cube[2]); glVertex3fv(cube[3]);
- glVertex3fv(cube[0]); glVertex3fv(cube[4]); glVertex3fv(cube[5]); glVertex3fv(cube[6]);
- glVertex3fv(cube[7]); glVertex3fv(cube[4]);
- glEnd();
+ const GLubyte indices[24] = {0,1,1,3,3,2,2,0,0,4,4,5,5,7,7,6,6,4,1,5,3,7,2,6};
- glBegin(GL_LINE_STRIP);
- glVertex3fv(cube[1]); glVertex3fv(cube[5]);
- glEnd();
-
- glBegin(GL_LINE_STRIP);
- glVertex3fv(cube[2]); glVertex3fv(cube[6]);
- glEnd();
-
- glBegin(GL_LINE_STRIP);
- glVertex3fv(cube[3]); glVertex3fv(cube[7]);
- glEnd();
-
- glPopMatrix();
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glVertexPointer(3, GL_FLOAT, 0, pos);
+ glDrawRangeElements(GL_LINES, 0, 7, 24, GL_UNSIGNED_BYTE, indices);
+ glDisableClientState(GL_VERTEX_ARRAY);
}
-#endif
static void drawshadbuflimits(Lamp *la, float mat[4][4])
{
@@ -997,7 +962,7 @@ static void drawshadbuflimits(Lamp *la, float mat[4][4])
madd_v3_v3v3fl(sta, mat[3], lavec, la->clipsta);
madd_v3_v3v3fl(end, mat[3], lavec, la->clipend);
- glBegin(GL_LINE_STRIP);
+ glBegin(GL_LINES);
glVertex3fv(sta);
glVertex3fv(end);
glEnd();
@@ -1423,14 +1388,14 @@ static void drawlamp(View3D *v3d, RegionView3D *rv3d, Base *base,
interp_v3_v3v3(lvec_clip, vec, lvec, clipsta_fac);
interp_v3_v3v3(vvec_clip, vec, vvec, clipsta_fac);
- glBegin(GL_LINE_STRIP);
+ glBegin(GL_LINES);
glVertex3fv(lvec_clip);
glVertex3fv(vvec_clip);
glEnd();
}
/* Else, draw spot direction (using distance as end limit, same as for Area lamp). */
else {
- glBegin(GL_LINE_STRIP);
+ glBegin(GL_LINES);
glVertex3f(0.0, 0.0, -circrad);
glVertex3f(0.0, 0.0, -la->dist);
glEnd();
@@ -1439,7 +1404,7 @@ static void drawlamp(View3D *v3d, RegionView3D *rv3d, Base *base,
else if (ELEM(la->type, LA_HEMI, LA_SUN)) {
/* draw the line from the circle along the dist */
- glBegin(GL_LINE_STRIP);
+ glBegin(GL_LINES);
vec[2] = -circrad;
glVertex3fv(vec);
vec[2] = -la->dist;
@@ -1499,7 +1464,7 @@ static void drawlamp(View3D *v3d, RegionView3D *rv3d, Base *base,
else if (la->area_shape == LA_AREA_RECT)
fdrawbox(-la->area_size * 0.5f, -la->area_sizey * 0.5f, la->area_size * 0.5f, la->area_sizey * 0.5f);
- glBegin(GL_LINE_STRIP);
+ glBegin(GL_LINES);
glVertex3f(0.0, 0.0, -circrad);
glVertex3f(0.0, 0.0, -la->dist);
glEnd();
@@ -1526,7 +1491,7 @@ static void drawlamp(View3D *v3d, RegionView3D *rv3d, Base *base,
if (vec[2] > 0) vec[2] -= circrad;
else vec[2] += circrad;
- glBegin(GL_LINE_STRIP);
+ glBegin(GL_LINES);
glVertex3fv(vec);
vec[2] = 0;
glVertex3fv(vec);
@@ -6308,7 +6273,8 @@ static void draw_editnurb_splines(Object *ob, Nurb *nurb, const bool sel)
if ((bp->f1 & SELECT) && (bp1->f1 & SELECT)) {
UI_ThemeColor(TH_NURB_SEL_ULINE);
- glBegin(GL_LINE_STRIP);
+ /* TODO: pull glBegin out of loop */
+ glBegin(GL_LINES);
glVertex3fv(bp->vec);
glVertex3fv(bp1->vec);
glEnd();
@@ -6321,7 +6287,7 @@ static void draw_editnurb_splines(Object *ob, Nurb *nurb, const bool sel)
else {
UI_ThemeColor(TH_NURB_ULINE);
- glBegin(GL_LINE_STRIP);
+ glBegin(GL_LINES);
glVertex3fv(bp->vec);
glVertex3fv(bp1->vec);
glEnd();
@@ -6343,7 +6309,8 @@ static void draw_editnurb_splines(Object *ob, Nurb *nurb, const bool sel)
if ((bp->f1 & SELECT) && (bp1->f1 & SELECT)) {
UI_ThemeColor(TH_NURB_SEL_VLINE);
- glBegin(GL_LINE_STRIP);
+ /* TODO: pull glBegin out of loop */
+ glBegin(GL_LINE);
glVertex3fv(bp->vec);
glVertex3fv(bp1->vec);
glEnd();
@@ -6356,7 +6323,7 @@ static void draw_editnurb_splines(Object *ob, Nurb *nurb, const bool sel)
else {
UI_ThemeColor(TH_NURB_VLINE);
- glBegin(GL_LINE_STRIP);
+ glBegin(GL_LINES);
glVertex3fv(bp->vec);
glVertex3fv(bp1->vec);
glEnd();
@@ -6519,7 +6486,7 @@ static void draw_editfont(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *b
vec1[1] += cu->linedist * cu->fsize;
vec2[1] -= cu->lines * cu->linedist * cu->fsize;
setlinestyle(3);
- glBegin(GL_LINE_STRIP);
+ glBegin(GL_LINES);
glVertex2fv(vec1);
glVertex2fv(vec2);
glEnd();
@@ -7028,31 +6995,21 @@ static void draw_forcefield(Object *ob, RegionView3D *rv3d,
setlinestyle(0);
}
-static void draw_box(float vec[8][3], bool solid)
+static void draw_box(const float vec[8][3], bool solid)
{
- if (!solid) {
- glBegin(GL_LINE_STRIP);
- glVertex3fv(vec[0]); glVertex3fv(vec[1]); glVertex3fv(vec[2]); glVertex3fv(vec[3]);
- glVertex3fv(vec[0]); glVertex3fv(vec[4]); glVertex3fv(vec[5]); glVertex3fv(vec[6]);
- glVertex3fv(vec[7]); glVertex3fv(vec[4]);
- glEnd();
-
- glBegin(GL_LINES);
- glVertex3fv(vec[1]); glVertex3fv(vec[5]);
- glVertex3fv(vec[2]); glVertex3fv(vec[6]);
- glVertex3fv(vec[3]); glVertex3fv(vec[7]);
- glEnd();
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glVertexPointer(3, GL_FLOAT, 0, vec);
+
+ if (solid) {
+ const GLubyte indices[24] = {0,1,2,3,7,6,5,4,4,5,1,0,3,2,6,7,3,7,4,0,1,5,6,2};
+ glDrawRangeElements(GL_QUADS, 0, 7, 24, GL_UNSIGNED_BYTE, indices);
}
else {
- glBegin(GL_QUADS);
- glVertex3fv(vec[0]); glVertex3fv(vec[1]); glVertex3fv(vec[2]); glVertex3fv(vec[3]);
- glVertex3fv(vec[7]); glVertex3fv(vec[6]); glVertex3fv(vec[5]); glVertex3fv(vec[4]);
- glVertex3fv(vec[4]); glVertex3fv(vec[5]); glVertex3fv(vec[1]); glVertex3fv(vec[0]);
- glVertex3fv(vec[3]); glVertex3fv(vec[2]); glVertex3fv(vec[6]); glVertex3fv(vec[7]);
- glVertex3fv(vec[3]); glVertex3fv(vec[7]); glVertex3fv(vec[4]); glVertex3fv(vec[0]);
- glVertex3fv(vec[1]); glVertex3fv(vec[5]); glVertex3fv(vec[6]); glVertex3fv(vec[2]);
- glEnd();
+ const GLubyte indices[24] = {0,1,1,2,2,3,3,0,0,4,4,5,5,6,6,7,7,4,1,5,2,6,3,7};
+ glDrawRangeElements(GL_LINES, 0, 7, 24, GL_UNSIGNED_BYTE, indices);
}
+
+ glDisableClientState(GL_VERTEX_ARRAY);
}
static void draw_bb_quadric(BoundBox *bb, char type, bool around_origin)