wxccxw
Messages postés755Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention30 janvier 2011
-
22 juin 2006 à 20:07
cs_cumu
Messages postés27Date d'inscriptiondimanche 4 juin 2000StatutMembreDernière intervention13 juillet 2007
-
13 juil. 2007 à 15:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
// 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.
cs_cumu
Messages postés27Date d'inscriptiondimanche 4 juin 2000StatutMembreDernière intervention13 juillet 2007 13 juil. 2007 à 12:16
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 !
SylvainSSiri
Messages postés4Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention28 mars 2007 6 oct. 2006 à 17:10
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
Bel0
Messages postés71Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention14 septembre 2007 23 juin 2006 à 08:53
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.
cs_hibi
Messages postés23Date d'inscriptionmercredi 18 août 2004StatutMembreDernière intervention20 novembre 2007 22 juin 2006 à 23:18
gbourgeois0019:
j'ai compilé avec visual C++ (Warining level 3)et ça donne pas de warnings,
le warning level 3 et une option par default de VC++.
avec un (warning level 3) il y a tjrs des warnings
gbourgeois0019
Messages postés152Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention 2 juin 20081 22 juin 2006 à 21:45
Faute de temps je n'ai pas regarder le code mais à l'execution ca ma l'air bien !
Seulement p-e que tu pourrais éviter les warnings ;)
wxccxw
Messages postés755Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention30 janvier 2011 22 juin 2006 à 20:07
j'aime beaucoup a par le fait que ce soit OpenGL mais bon ^^ bon prog : 10/10
13 juil. 2007 à 15:57
==========================================================================================
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.
13 juil. 2007 à 12:16
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 !
6 oct. 2006 à 17:10
SylvainSSiri@hotmail.com
23 juin 2006 à 08:53
while (GetMessage(&msg, NULL, 0, 0) != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
22 juin 2006 à 23:18
j'ai compilé avec visual C++ (Warining level 3)et ça donne pas de warnings,
le warning level 3 et une option par default de VC++.
avec un (warning level 3) il y a tjrs des warnings
22 juin 2006 à 21:45
Seulement p-e que tu pourrais éviter les warnings ;)
22 juin 2006 à 20:07