Fix armature stick draw, unpack-alignment was set but never restored

Drawing a single stick bone set the alignment to 1, applying this setting to the rest of Blender.
This commit is contained in:
Campbell Barton 2016-06-09 04:53:04 +10:00
parent b41cfb590c
commit 69bf7a44aa
1 changed files with 12 additions and 2 deletions

View File

@ -986,10 +986,11 @@ static GLubyte bm_dot7[] = {0x0, 0x38, 0x7C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38};
static void draw_line_bone(int armflag, int boneflag, short constflag, unsigned int id,
bPoseChannel *pchan, EditBone *ebone)
{
/* call this once, avoid constant changing */
BLI_assert(glaGetOneInt(GL_UNPACK_ALIGNMENT) == 1);
float length;
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
if (pchan)
length = pchan->bone->length;
else
@ -2699,6 +2700,11 @@ bool draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
if (v3d->flag2 & V3D_RENDER_OVERRIDE)
return true;
/* needed for 'draw_line_bone' which draws pixel. */
if (arm->drawtype == ARM_LINE) {
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
}
if (dt > OB_WIRE) {
/* we use color for solid lighting */
if (ELEM(arm->drawtype, ARM_LINE, ARM_WIRE)) {
@ -2774,5 +2780,9 @@ bool draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
/* restore */
glFrontFace(GL_CCW);
if (arm->drawtype == ARM_LINE) {
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
}
return retval;
}