[Bf-blender-cvs] [5dbc69c] opensubdiv-modifier: OpenSubdiv: Can't really avoid passing subdiv level to GL mesh construction
Sergey Sharybin
noreply at git.blender.org
Fri Jul 17 10:34:25 CEST 2015
Commit: 5dbc69caad5e441aade6ce6ed9ea90c8c2d7f0d5
Author: Sergey Sharybin
Date: Fri Jul 17 10:32:17 2015 +0200
Branches: opensubdiv-modifier
https://developer.blender.org/rB5dbc69caad5e441aade6ce6ed9ea90c8c2d7f0d5
OpenSubdiv: Can't really avoid passing subdiv level to GL mesh construction
Topology is not refined at that point yet and does not contain any information
about subdivision level.
===================================================================
M intern/opensubdiv/opensubdiv_capi.cc
M intern/opensubdiv/opensubdiv_capi.h
M source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c
===================================================================
diff --git a/intern/opensubdiv/opensubdiv_capi.cc b/intern/opensubdiv/opensubdiv_capi.cc
index 1d50d32..717af4f 100644
--- a/intern/opensubdiv/opensubdiv_capi.cc
+++ b/intern/opensubdiv/opensubdiv_capi.cc
@@ -145,6 +145,7 @@ typedef PartitionedMesh<GLVertexBuffer,
struct OpenSubdiv_GLMesh *openSubdiv_createOsdGLMeshFromTopologyRefiner(
OpenSubdiv_TopologyRefinerDescr *topology_refiner,
int evaluator_type,
+ int level,
int /*subdivide_uvs*/)
{
using OpenSubdiv::Far::TopologyRefiner;
@@ -173,7 +174,7 @@ struct OpenSubdiv_GLMesh *openSubdiv_createOsdGLMeshFromTopologyRefiner(
mesh = new class(refiner, \
num_vertex_elements, \
num_varying_elements, \
- refiner->GetMaxLevel(), \
+ level, \
bits); \
break;
diff --git a/intern/opensubdiv/opensubdiv_capi.h b/intern/opensubdiv/opensubdiv_capi.h
index 770bd58..c86e739 100644
--- a/intern/opensubdiv/opensubdiv_capi.h
+++ b/intern/opensubdiv/opensubdiv_capi.h
@@ -64,9 +64,10 @@ enum {
/* TODO(sergey): Re-name and avoid bad level data access. */
OpenSubdiv_GLMesh *openSubdiv_createOsdGLMeshFromTopologyRefiner(
- struct OpenSubdiv_TopologyRefinerDescr *topology_refiner,
- int evaluator_type,
- int subdivide_uvs);
+ struct OpenSubdiv_TopologyRefinerDescr *topology_refiner,
+ int evaluator_type,
+ int level,
+ int subdivide_uvs);
void openSubdiv_deleteOsdGLMesh(OpenSubdiv_GLMesh *gl_mesh);
unsigned int openSubdiv_getOsdGLMeshPatchIndexBuffer(
diff --git a/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c b/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c
index 5a93279..65053df 100644
--- a/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c
+++ b/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c
@@ -243,6 +243,7 @@ bool ccgSubSurf_prepareGLMesh(CCGSubSurf *ss, bool use_osd_glsl)
ss->osd_mesh = openSubdiv_createOsdGLMeshFromTopologyRefiner(
ss->osd_topology_refiner,
compute_type,
+ ss->subdivLevels,
ss->osd_subsurf_uv);
ss->osd_topology_refiner = NULL;
More information about the Bf-blender-cvs
mailing list