3DS FILES VIEWER

Signaler
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011
-
Messages postés
27
Date d'inscription
dimanche 4 juin 2000
Statut
Membre
Dernière intervention
13 juillet 2007
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38250-3ds-files-viewer

Messages postés
27
Date d'inscription
dimanche 4 juin 2000
Statut
Membre
Dernière intervention
13 juillet 2007

Concernant les fuites je rajouterai également ces deux bouts de codes dans mathlib.h
==========================================================================================
inline vec3& Cross(const vec3 &v1,const vec3 &v2) {
vec3 *ret = new vec3(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x);
return *ret;
}

// This calculates a vector between 2 points and returns the result
inline vec3& Vector(const vec3 &vp1, const vec3 &vp2) {
vec3 *ret = new vec3(vp1.x - vp2.x, vp1.y - vp2.y, vp1.z - vp2.z);
return *ret;
}
===============================================================================================

A corriger en remplacant par

==========================================================================================
inline vec3& Cross(const vec3 &v1,const vec3 &v2) {
vec3 ret(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x);
return ret;
}

// This calculates a vector between 2 points and returns the result
inline vec3& Vector(const vec3 &vp1, const vec3 &vp2) {
vec3 ret(vp1.x - vp2.x, vp1.y - vp2.y, vp1.z - vp2.z);
return ret;
}
===============================================================================================

Pour le post d'avant il faut utiliser un smart pointer pour verts,normals,texverts et pfaces afin de liberer automatiquement la mémoire.
Messages postés
27
Date d'inscription
dimanche 4 juin 2000
Statut
Membre
Dernière intervention
13 juillet 2007

Un sérieux manque de gestion de la mémoire.

Les fichier 3DS.h et 3DS.cpp comporte de nombreuses fuites de mémoire notament à cause de la structure de données :

struct t3DObject
{
int numOfVerts;
int numOfFaces;
int numTexVertex;
int materialID;
bool bHasTexture;
bool bHasmaterialID;
char strName[255];
vec3 *pVerts;
vec3 *pNormals;
vec2 *pTexVerts;
tFace *pFaces;
};

Des pointeur dans la structure qui ne sont bien sûr jamais déchargé via un delete[] .. !!!!

Cette partie du code source est donc à revoir

Une version sans fuite de mémoire serait donc la bienvenue car cette source est vraiment trés interressente !
Messages postés
4
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
28 mars 2007

Salut,jaime beaucoup ton programme.J'utilise 3ds max avec un ami et je vais essayer mes projets sur ton visualisateur.Si tu pourrais m'envoyer tes futures mises à jours de ce logiciel.Merci.

SylvainSSiri@hotmail.com
Messages postés
71
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
14 septembre 2007

Dans ton fichier principale, tu devrais remplacer ta boucle qui s'occupe des messages par celle-ci. Ca évite que le processeur soit constamment utilisé à 100% (ce qui est qd meme mieux). En testant, je n'ai pas vu de différence entre ta boucle et celle-ci.

while (GetMessage(&msg, NULL, 0, 0) != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Afficher les 7 commentaires