Chargement de fichier *.3ds dans GLScene [Résolu]

Messages postés
13
Date d'inscription
dimanche 10 septembre 2006
Dernière intervention
3 octobre 2011
- 28 sept. 2011 à 10:00 - Dernière réponse :
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 3 oct. 2011 à 16:11
Bonjour,

Je travaille actuellement avec GLScene et tout fonctionne correctement sauf pour le temps de chargement très long.

En effet, j'ai beaucoup d'objets en *.3ds que je charge sur des TGLFreeForm dans le OnCreate de la Form.

Vue que ce sont toujours les même fichiers *.3ds que je charge, je me demandé s'il était possible de les pré charger directement dans Delphi avant de compiler et éviter ainsi de les charger à l'exécution.
Un peu à la manière d'une image dans le Picture d'un TImage.

Merci de votre aide !
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 28 sept. 2011 à 15:49
3
Merci
Bonsoir,

tu peux utiliser un fichier de ressources
dans lequel tu peux pratiquement tout stocker.

voir méthode créée par DelphiCool

cantador

Merci cs_cantador 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_cantador
Messages postés
13
Date d'inscription
dimanche 10 septembre 2006
Dernière intervention
3 octobre 2011
- 29 sept. 2011 à 11:40
0
Merci
Merci Cantador

J'ai essayé d'utiliser un fichier de ressources.

A première vue ca marche bien jusqu'au chargement du fichier dans Res (TResourceStream) mais c'est après que ca se gâte.

Quand je fais ??FreeForm.LoadFromStream('AVION',Res);?? j'ai le message d'erreur ??Failed to store GIF on clipboard??.

J'explique ma démarche :
-j'ai modifié le fichier ressource de DelhiCool avec ??Ressource Hacker?? :
-Add a new Ressource
-je charge mon fichier.3ds
-Ressource Type : GLSCENE
-Ressource Name : AVION
-Ressource Language : 1033 (Je sais pas trop ce qu'il faut et j'ai essayé 1036 et 0 mais pas de changement)
j'ai lu que 1033 c'est pour l'Anglais puis 1036 et 0 sont utilisés par DelphiCool.

-Je suis parti du source de DelphiCool et j'ai ajouté mon GLScene.

-Sur un bouton j'ai :
procedure TForm1.Button17Click(Sender: TObject);
var
FreeForm : TGLFreeForm;
begin
FreeForm := TGLFreeForm.Create(GLDummyCube1);
Res := TResourceStream.Create(hinstance, 'AVION', 'GLSCENE');
FreeForm.LoadFromStream('AVION',Res);
FreeForm.BuildOctree;
end;
Commenter la réponse de Alberic81
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 29 sept. 2011 à 13:49
0
Merci
versions de delphi et de Ressource hacker ?


cantador
Commenter la réponse de cs_cantador
Messages postés
13
Date d'inscription
dimanche 10 septembre 2006
Dernière intervention
3 octobre 2011
- 29 sept. 2011 à 14:04
0
Merci
Ca y est j'ai trouvé !!

J'ai ajouté l'extansion du fichier :
FreeForm.LoadFromStream('AVION.3ds',Res);

et là, plus de message d'erreur!

Merci Cantador

(Delphi2009 et Resource Hacker 3.6.0.92)
Commenter la réponse de Alberic81
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 29 sept. 2011 à 14:26
0
Merci
de rien, je n'ai pas fait grand chose
juste catalyser ta réflexion..


cantador
Commenter la réponse de cs_cantador
Messages postés
13
Date d'inscription
dimanche 10 septembre 2006
Dernière intervention
3 octobre 2011
- 30 sept. 2011 à 14:34
0
Merci
Après avoir réussi sans avoir d'erreur en partant du source de Delphicool, j'ai mis en application cette méthode dans mon Projet !

Tout fonctionne bien mais j'en reviens à mon problème 1er : le temps de chargement est long.
L'utilisation de fichier ressource a apporté de l'amélioration mais le gain de temps reste négligeable.

Connaissez-vous une autre méthode qui pourrait me faire gagner encore du temps ?

J'ai eu une autre idée :
Cette fiche n'étant créée que lorsque j'appui sur un bouton de ma fiche principale, J'ai essayé de faire le create de ma fiche3d en parallèle mais ma fiche principale bloque le temps du chargement !

Est-ce possible de faire le create de ma fiche3d en parallèle sans que ma fiche principale se bloque ?

Merci
Commenter la réponse de Alberic81
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
- 30 sept. 2011 à 20:02
0
Merci
« Connaissez-vous une autre méthode qui pourrait me faire gagner encore du temps ? »

Bein non. Il faut bien que le chargement se fasse. C'est le problème de tous les jeux vidéo; il y a toujours un temps de latence au changement de niveau.

Par contre, dans ton cas, tu peux peut-être utiliser un artifice cosmétique. C'est-à-dire non pas réduire le temps de chargement, mais le faire de façon plus discrète dans l'événement Application.OnIdle. Ou dans un Thread.
Mais, perso, j'ai jamais essayé.

PS: Voir TIdleEvent et TApplicationEvents
Commenter la réponse de Caribensila
Messages postés
13
Date d'inscription
dimanche 10 septembre 2006
Dernière intervention
3 octobre 2011
- 3 oct. 2011 à 08:45
0
Merci
Merci pour ces précisions

Je vais me contenter des fichiers ressources pour le moment.
Commenter la réponse de Alberic81
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 3 oct. 2011 à 16:11
0
Merci
une petite barre de chargement dans un thread et hop..


cantador
Commenter la réponse de cs_cantador

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.