Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2005-03-30 12:12:27 +0400
committerDaniel Dunbar <daniel@zuster.org>2005-03-30 12:12:27 +0400
commitfef6e0012e8057e4864391c73b190c3bc6972c5d (patch)
tree139ae4a53767770dfc51fcee9d298f1bdb4541ba /source/blender/blenkernel/intern/subsurf.c
parente5d14112837634fa2456e83ba6d6738f77aa08f5 (diff)
- initial commit of a real (as in not just copying the DispListMesh)
DerivedMesh implementation of CCGSubSurf. Only used in editmode at the moment, and does not draw smooth normals correctly. - Just in its own this brings a rather large speedup for editing subsurfs.
Diffstat (limited to 'source/blender/blenkernel/intern/subsurf.c')
-rw-r--r--source/blender/blenkernel/intern/subsurf.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/source/blender/blenkernel/intern/subsurf.c b/source/blender/blenkernel/intern/subsurf.c
index 2c68ef16858..a2c2a9a637d 100644
--- a/source/blender/blenkernel/intern/subsurf.c
+++ b/source/blender/blenkernel/intern/subsurf.c
@@ -1089,42 +1089,34 @@ static DispListMesh *subsurf_subdivide_to_displistmesh(HyperMesh *hme, short sub
return dlm;
}
-static DispListMesh *subsurf_make_dispListMesh_from_editmesh(EditMesh *em, int subdivLevels, short type) {
+DerivedMesh *subsurf_make_derived_from_editmesh(EditMesh *em, int subdivLevels, short type) {
if (subdivLevels<1) {
- return displistmesh_from_editmesh(em);
+ return derivedmesh_from_displistmesh(em, displistmesh_from_editmesh(em));
#ifdef USE_CCGSUBSURFLIB
} else if (type==ME_CCG_SUBSURF) {
- return subsurf_ccg_make_dispListMesh_from_editmesh(em, subdivLevels);
+ return subsurf_ccg_make_derived_from_editmesh(em, subdivLevels);
#endif
} else {
HyperMesh *hme= hypermesh_from_editmesh(em, subdivLevels);
- return subsurf_subdivide_to_displistmesh(hme, subdivLevels, type);
+ return derivedmesh_from_displistmesh(em, subsurf_subdivide_to_displistmesh(hme, subdivLevels, type));
}
}
-DerivedMesh *subsurf_make_derived_from_editmesh(EditMesh *em, int subdivLevels, short type) {
- return derivedmesh_from_displistmesh(em, subsurf_make_dispListMesh_from_editmesh(em, subdivLevels, type));
-}
-
-static DispListMesh *subsurf_make_dispListMesh_from_mesh(Mesh *me, int subdivLevels) {
+DerivedMesh *subsurf_make_derived_from_mesh(Mesh *me, int subdivLevels) {
if (subdivLevels<1) {
- return displistmesh_from_mesh(me, NULL);
+ return derivedmesh_from_displistmesh(NULL, displistmesh_from_mesh(me, NULL));
#ifdef USE_CCGSUBSURFLIB
} else if (me->subsurftype==ME_CCG_SUBSURF) {
- return subsurf_ccg_make_dispListMesh_from_mesh(me, subdivLevels);
+ return subsurf_ccg_make_derived_from_mesh(me, subdivLevels);
#endif
} else {
HyperMesh *hme= hypermesh_from_mesh(me, subdivLevels);
- return subsurf_subdivide_to_displistmesh(hme, subdivLevels, me->subsurftype);
+ return derivedmesh_from_displistmesh(NULL, subsurf_subdivide_to_displistmesh(hme, subdivLevels, me->subsurftype));
}
}
-DerivedMesh *subsurf_make_derived_from_mesh(Mesh *me, int subdivLevels) {
- return derivedmesh_from_displistmesh(NULL, subsurf_make_dispListMesh_from_mesh(me, subdivLevels));
-}
-
// editarmature.c
void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3])
{