#0 

28-08-2007 15:48:35

Zxenop
Petit nouveau
Date d'inscription: 14-05-2007
Messages: 4

Bonjour tout le monde, pour ceux qui ne souvienne pas de moi (remarquez avec 4 post ça ce comprend >_<), j'avais posté un sujet sur modification des mesh d'un terrain en live (sujet).

J'ai beaucoup avancé depuis, j'arrive à afficher la France entière avec un niveau de détail sympa puisque j'ai la une donnée d'élévation tout les 90 mètres, avec du LOD et tout et tout, pour ça j'ai crée deux classe en plus dans Irrlicht :
-un OnTheFlyTerrainSceneNode qui concerve un minimum d'info pour ne pas encombrer la mémoire
-un LandScapeSceneNode qui permet de relier tout les morceaux de terrain ensemble et qui charge ces données dans un thread à part (ce qui permet d'aller gratter sur le disque sans pour autant gêner la boucle de rendue)

Maintenant que j'ai un jolie model qui change en live et qui tourne vachement bien,  j'aimerais coller des textures par dessus, le problème est le même que pour les terrains j'aimerais éviter de charger tout les textures avant que commencer le rendue (~56000 fichiers jpeg en mémoire ça va peut être faire beaucoup) j'ai donc crée une autre classe qui lance un autre thread pour ça. Le petit problème est que je ne peut pas créer des instances de CD3D9Texture à la volée (en fait le problème vient surtout de IDirectD9Texture qui est englobé par cette classe de Irrlicht). Pour passer outre je me suis dit que j'allais créer 7 instances de CD3D9Texture au démarrage (pour les 7 niveaux de détails de mes textures) puis les modifier pour quelles correspondent à la bonne images juste avant la le début du rendu.

J'ai donc fait une autre classe CD3D9OnTheFlyTexture pour pouvoir ajouter quelques méthodes sympa pour injecter les valeurs de mon images directement dans l'instance de IDirectD9Texture englobé par la classe CD3D9Texture, le problème est que ça ne marche tout simplement pas, je récupère bien mes données sur le disque mais lors du  passage au rendu il n'y a soit aucune texture soit un vague carré noir, j'aimerais donc savoir si quelqu'un avait déjà essayé un truc similaire auparavant et si oui pourrait il m'aider.

En vous remerciant =}

Hors ligne


#1 

30-08-2007 20:25:11

katsankat
Membre
Date d'inscription: 24-02-2007
Messages: 43

Salut, je crois qu'irrlicht n'est pas thread-safe: on ne peut pas charger une texture dans un autre thread.
http://irrlicht.sourceforge.net/phpBB2/ … ad+texture

Aussi, s'il est noir c'est peut-être parce que sa propriété lighting est activée, mais qu'il n'y a pas de lumière dans la scène?

Dernière modification par katsankat (30-08-2007 20:31:03)

Hors ligne


#2 

30-08-2007 21:01:31

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

regarde également après avoir chargé ta texture à la volé en essayant de regénéré le level de mipmap ça doit être un truc du genre regenerateMipMapLevels je sais plus trop ou.
Mais Katsankat à raison, irrlicht n'est pas prévu pour fonctionner avec des threads, ça peut provoquer des problèmes de crashs alléatoire.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
33 invités en ligne
Aucun membre connecté
RSS Feed