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:
Diffstat (limited to 'source/blender/src/drawobject.c')
-rw-r--r--source/blender/src/drawobject.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c
index 60233a3cef3..48c02654fe1 100644
--- a/source/blender/src/drawobject.c
+++ b/source/blender/src/drawobject.c
@@ -1297,7 +1297,7 @@ static void drawDispListwire(ListBase *dlbase)
parts= dl->parts;
while(parts--) {
nr= dl->nr;
- if(dl->flag & 1) glBegin(GL_LINE_LOOP);
+ if(dl->flag & DL_CYCL_U) glBegin(GL_LINE_LOOP);
else glBegin(GL_LINE_STRIP);
while(nr--) {
@@ -1311,7 +1311,7 @@ static void drawDispListwire(ListBase *dlbase)
while(nr--) {
data= ( dl->verts )+3*nr;
parts= dl->parts;
- if(dl->flag & 2) glBegin(GL_LINE_LOOP);
+ if(dl->flag & DL_CYCL_V) glBegin(GL_LINE_LOOP);
else glBegin(GL_LINE_STRIP);
while(parts--) {
@@ -1374,9 +1374,14 @@ static void drawDispListsolid(ListBase *lb, Object *ob)
int drawsmooth= !(G.f & G_BACKBUFSEL);
if(lb==0) return;
+
+ /* drawsmooth abused here, except for Mesh this draws with smooth default */
if (drawsmooth) {
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHTING);
+
+ if(ob->transflag & OB_NEG_SCALE) glFrontFace(GL_CW);
+ else glFrontFace(GL_CCW);
}
dl= lb->first;
@@ -1389,7 +1394,7 @@ static void drawDispListsolid(ListBase *lb, Object *ob)
if(!drawsmooth) {
for(a=0; a<dl->parts; a++) {
- DL_SURFINDEX(dl->flag & 1, dl->flag & 2, dl->nr, dl->parts);
+ DL_SURFINDEX(dl->flag & DL_CYCL_U, dl->flag & DL_CYCL_V, dl->nr, dl->parts);
v1= data+ 3*p1;
v2= data+ 3*p2;
@@ -1420,7 +1425,7 @@ static void drawDispListsolid(ListBase *lb, Object *ob)
for(a=0; a<dl->parts; a++) {
- DL_SURFINDEX(dl->flag & 1, dl->flag & 2, dl->nr, dl->parts);
+ DL_SURFINDEX(dl->flag & DL_CYCL_U, dl->flag & DL_CYCL_V, dl->nr, dl->parts);
v1= data+ 3*p1;
v2= data+ 3*p2;
@@ -1560,6 +1565,7 @@ static void drawDispListsolid(ListBase *lb, Object *ob)
if(drawsmooth) {
glShadeModel(GL_FLAT);
glDisable(GL_LIGHTING);
+ glFrontFace(GL_CCW);
}
}
@@ -1588,7 +1594,7 @@ static void drawDispListshaded(ListBase *lb, Object *ob)
for(a=0; a<dl->parts; a++) {
- DL_SURFINDEX(dl->flag & 1, dl->flag & 2, dl->nr, dl->parts);
+ DL_SURFINDEX(dl->flag & DL_CYCL_U, dl->flag & DL_CYCL_V, dl->nr, dl->parts);
v1= data+ 3*p1;
v2= data+ 3*p2;
@@ -1714,7 +1720,11 @@ static void drawmeshsolid(Object *ob, float *nors)
if( (G.f & G_BACKBUFSEL)==0 ) {
glEnable(GL_LIGHTING);
init_gl_materials(ob);
+
two_sided( me->flag & ME_TWOSIDED );
+
+ if(ob->transflag & OB_NEG_SCALE) glFrontFace(GL_CW);
+ else glFrontFace(GL_CCW);
}
mface= me->mface;
@@ -1917,7 +1927,7 @@ static void drawmeshsolid(Object *ob, float *nors)
glDisable(GL_CULL_FACE);
}
glDisable(GL_LIGHTING);
-
+ glFrontFace(GL_CCW);
}
static void drawmeshshaded(Object *ob, unsigned int *col1, unsigned int *col2)