BMesh: editmode drawing set every faces material

Check for changes in material (as other drawing code already does)
This commit is contained in:
Campbell Barton 2015-05-19 17:54:47 +10:00
parent da34136de1
commit eb05e87e16
2 changed files with 19 additions and 7 deletions

View File

@ -793,7 +793,7 @@ static void cdDM_drawMappedFaces(DerivedMesh *dm,
else {
/* we need to check if the next material changes */
int next_actualFace = dm->drawObject->triangle_to_mface[0];
int prev_mat_nr = -1;
short prev_mat_nr = -1;
for (i = 0; i < tottri; i++) {
//int actualFace = dm->drawObject->triangle_to_mface[i];

View File

@ -521,8 +521,6 @@ static void emDM_drawMappedFaces(DerivedMesh *dm,
GLenum poly_prev = GL_ZERO;
GLenum shade_prev = GL_ZERO;
(void)setMaterial; /* UNUSED */
/* currently unused -- each original face is handled separately */
(void)compareDrawOptions;
@ -539,6 +537,8 @@ static void emDM_drawMappedFaces(DerivedMesh *dm,
}
if (bmdm->vertexCos) {
short prev_mat_nr = -1;
/* add direct access */
const float (*vertexCos)[3] = bmdm->vertexCos;
const float (*vertexNos)[3];
@ -569,8 +569,14 @@ static void emDM_drawMappedFaces(DerivedMesh *dm,
setDrawOptions(userData, BM_elem_index_get(efa)));
if (draw_option != DM_DRAW_OPTION_SKIP) {
const GLenum poly_type = GL_TRIANGLES; /* BMESH NOTE, this is odd but keep it for now to match trunk */
if (setMaterial)
setMaterial(efa->mat_nr + 1, NULL);
if (efa->mat_nr != prev_mat_nr) {
if (setMaterial) {
setMaterial(efa->mat_nr + 1, NULL);
}
prev_mat_nr = efa->mat_nr;
}
if (draw_option == DM_DRAW_OPTION_STIPPLE) { /* enabled with stipple */
if (poly_prev != GL_ZERO) glEnd();
@ -645,6 +651,8 @@ static void emDM_drawMappedFaces(DerivedMesh *dm,
}
}
else {
short prev_mat_nr = -1;
BM_mesh_elem_index_ensure(bm, lnors ? BM_FACE | BM_LOOP : BM_FACE);
for (i = 0; i < tottri; i++) {
@ -661,8 +669,12 @@ static void emDM_drawMappedFaces(DerivedMesh *dm,
if (draw_option != DM_DRAW_OPTION_SKIP) {
const GLenum poly_type = GL_TRIANGLES; /* BMESH NOTE, this is odd but keep it for now to match trunk */
if (setMaterial)
setMaterial(efa->mat_nr + 1, NULL);
if (efa->mat_nr != prev_mat_nr) {
if (setMaterial) {
setMaterial(efa->mat_nr + 1, NULL);
}
prev_mat_nr = efa->mat_nr;
}
if (draw_option == DM_DRAW_OPTION_STIPPLE) { /* enabled with stipple */