[Bf-blender-cvs] [62a0350] master: Editmode drawing: avoid glBegin/End for every tri (emDM_drawMappedFacesMat, GLSL)
Campbell Barton
noreply at git.blender.org
Tue Mar 25 10:36:28 CET 2014
Commit: 62a03509574eac608f3199b4fd2ad8c00e14c789
Author: Campbell Barton
Date: Tue Mar 25 20:11:54 2014 +1100
https://developer.blender.org/rB62a03509574eac608f3199b4fd2ad8c00e14c789
Editmode drawing: avoid glBegin/End for every tri (emDM_drawMappedFacesMat,GLSL)
===================================================================
M source/blender/blenkernel/intern/editderivedmesh.c
===================================================================
diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c
index 6318933..752ae29 100644
--- a/source/blender/blenkernel/intern/editderivedmesh.c
+++ b/source/blender/blenkernel/intern/editderivedmesh.c
@@ -953,20 +953,27 @@ static void emDM_drawMappedFacesGLSL(DerivedMesh *dm,
int drawSmooth;
efa = ltri[0]->f;
- drawSmooth = BM_elem_flag_test(efa, BM_ELEM_SMOOTH);
if (setDrawOptions && (setDrawOptions(userData, BM_elem_index_get(efa)) == DM_DRAW_OPTION_SKIP))
continue;
new_matnr = efa->mat_nr + 1;
if (new_matnr != matnr) {
+ if (matnr != -1)
+ glEnd();
+
do_draw = setMaterial(matnr = new_matnr, &gattribs);
if (do_draw)
DM_vertex_attributes_from_gpu(dm, &gattribs, &attribs);
+
+ glBegin(GL_TRIANGLES);
}
if (do_draw) {
- glBegin(GL_TRIANGLES);
+
+ /* draw face */
+ drawSmooth = BM_elem_flag_test(efa, BM_ELEM_SMOOTH);
+
if (!drawSmooth) {
if (vertexCos) {
glNormal3fv(polyNos[BM_elem_index_get(efa)]);
@@ -1000,9 +1007,12 @@ static void emDM_drawMappedFacesGLSL(DerivedMesh *dm,
}
}
}
- glEnd();
}
}
+
+ if (matnr != -1) {
+ glEnd();
+ }
}
static void emDM_drawFacesGLSL(DerivedMesh *dm,
@@ -1045,7 +1055,6 @@ static void emDM_drawMappedFacesMat(DerivedMesh *dm,
int drawSmooth;
efa = ltri[0]->f;
- drawSmooth = BM_elem_flag_test(efa, BM_ELEM_SMOOTH);
/* face hiding */
if (setFace && !setFace(userData, BM_elem_index_get(efa)))
@@ -1054,12 +1063,18 @@ static void emDM_drawMappedFacesMat(DerivedMesh *dm,
/* material */
new_matnr = efa->mat_nr + 1;
if (new_matnr != matnr) {
+ if (matnr != -1)
+ glEnd();
+
setMaterial(userData, matnr = new_matnr, &gattribs);
DM_vertex_attributes_from_gpu(dm, &gattribs, &attribs);
+
+ glBegin(GL_TRIANGLES);
}
- /* face */
- glBegin(GL_TRIANGLES);
+ /* draw face */
+ drawSmooth = BM_elem_flag_test(efa, BM_ELEM_SMOOTH);
+
if (!drawSmooth) {
if (vertexCos) {
glNormal3fv(polyNos[BM_elem_index_get(efa)]);
@@ -1093,6 +1108,9 @@ static void emDM_drawMappedFacesMat(DerivedMesh *dm,
}
}
}
+ }
+
+ if (matnr != -1) {
glEnd();
}
}
More information about the Bf-blender-cvs
mailing list