[Bf-blender-cvs] [443a1a1] opensubdiv-modifier: OpenSubdiv: Fix CCGDM drawing when not using GPU backend

Sergey Sharybin noreply at git.blender.org
Mon Jul 14 21:37:02 CEST 2014


Commit: 443a1a167ba9da78887de8c546e00cf853fc1288
Author: Sergey Sharybin
Date:   Mon Jul 14 22:47:25 2014 +0600
https://developer.blender.org/rB443a1a167ba9da78887de8c546e00cf853fc1288

OpenSubdiv: Fix CCGDM drawing when not using GPU backend

===================================================================

M	source/blender/blenkernel/BKE_subsurf.h
M	source/blender/blenkernel/intern/subsurf_ccg.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_subsurf.h b/source/blender/blenkernel/BKE_subsurf.h
index 91ab9e5..c2a07ac 100644
--- a/source/blender/blenkernel/BKE_subsurf.h
+++ b/source/blender/blenkernel/BKE_subsurf.h
@@ -103,7 +103,7 @@ typedef struct CCGDerivedMesh {
 
 	struct CCGSubSurf *ss;
 	int freeSS;
-	int drawInteriorEdges, useSubsurfUv;
+	int drawInteriorEdges, useSubsurfUv, useGpuBackend;
 
 	struct {int startVert; struct CCGVert *vert; } *vertMap;
 	struct {int startVert; int startEdge; struct CCGEdge *edge; } *edgeMap;
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 45c0b63..dfe2e1e 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -1661,7 +1661,7 @@ static void ccgDM_drawEdges(DerivedMesh *dm, bool drawLooseEdges, bool drawAllEd
 	int useAging;
 
 #ifdef WITH_OPENSUBDIV
-	{
+	if (ccgdm->useGpuBackend) {
 		/* TODO(sergey): We currently only support all edges drawing. */
 		ccgSubSurf_prepareGLMesh(ss);
 		ccgSubSurf_drawGLMesh(ss, false, -1);
@@ -1786,7 +1786,7 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm, float (*partial_redraw_planes)
 	int drawcurrent = 0, matnr = -1, shademodel = -1;
 
 #ifdef WITH_OPENSUBDIV
-	{
+	if (ccgdm->useGpuBackend) {
 		int i, matnr = -1, shademodel = -1;
 		CCGFaceIterator *fi;
 		ccgSubSurf_prepareGLMesh(ss);
@@ -2020,7 +2020,7 @@ static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm,
 	int a, i, do_draw, numVerts, matnr, new_matnr, totface;
 
 #ifdef WITH_OPENSUBDIV
-	{
+	if (ccgdm->useGpuBackend) {
 		int i, matnr = -1, shademodel = -1;
 		CCGFaceIterator *fi;
 		ccgSubSurf_prepareGLMesh(ss);
@@ -4013,6 +4013,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
 	ccgdm->ss = ss;
 	ccgdm->drawInteriorEdges = drawInteriorEdges;
 	ccgdm->useSubsurfUv = useSubsurfUv;
+	ccgdm->useGpuBackend = use_gpu_backend;
 
 	/* CDDM hack. */
 	ccgdm->edgeFlags = MEM_callocN(sizeof(short) * totedge, "edgeFlags");




More information about the Bf-blender-cvs mailing list