Historique des modifications - Message

Message #10585

Sujet: Mesh avec plusieurs positions


Type Date Auteur Contenu
Dernière modification 03-07-2012 18:54:01 johnplayer
Voilà dans ma quête du gain de mémoire, je me suis posé une question : est-il possible de rendre plusieurs fois le même MeshBuffer à des positions différentes?
J'ai recopier CMeshSceneNode et j'y ais apporté quelques modifs.

1/ ajout d'une struct pour les transformation
struct MultiMeshData
{
    core::vector3df position;
    core::vector3df rotation;
    core::vector3df scale;

    MultiMeshData(core::vector3df pos=core::vector3df(0.0f), core::vector3df rota=core::vector3df(0.0f), core::vector3df sca=core::vector3df(1.0f)) : position(pos), rotation(rota), scale(sca) {}
};

2/ ajout d'un membre à mon MeshSceneNode :
core::array<MultiMeshData> Instances;

3/ modification du render, au lieu de :
void MultipleMeshSceneNode::render()
{
       /// code de render
}

j'ai mis :
void MultipleMeshSceneNode::render()
{
        /// pour chaque position
        for(u32 a=0; a < Instances.size(); a++)
	{
               /// code de render
        }
}

Mon nombre de triangles augmente bien au fur et à mesure que je rajoute des positions mais seul le mesh associés à la dernière position est visible.
Au final, je pense que les meshs sont bien dupliqués mais sont tous affichés à la dernière transformation appliquée.
Si quelqu'un s'y connait en rendu et peut me dire si ce que j'essaie de faire est vain ou pas, j'en serais ravi.

Sinon il y a "ISceneNode* CMeshSceneNode::clone(ISceneNode* newParent, ISceneManager* newManager)" mais je ne sais pas s'il fait juste un doublon du node donc MeshBuffer*2 ou si le node créé utilise le même Buffer que son original.
Création du message 03-07-2012 18:53:19 johnplayer
Voilà dans ma quête du gain de mémoire, je me suis posé une question : est-il possible de rendre plusieurs fois le même MeshBuffer à des positions différentes?
J'ai recopier CMeshSceneNode et j'y ais apporté quelques modifs.

1/ ajout d'une struct pour les transformation
struct MultiMeshData
{
    core::vector3df position;
    core::vector3df rotation;
    core::vector3df scale;

    MultiMeshData(core::vector3df pos=core::vector3df(0.0f), core::vector3df rota=core::vector3df(0.0f), core::vector3df sca=core::vector3df(1.0f)) : position(pos), rotation(rota), scale(sca) {}
};

2/ ajout d'un membre à mon MeshSceneNode :
core::array<MultiMeshData> Instances;

3/ modification du render, au lieu de :
void MultipleMeshSceneNode::render()
{
       /// code de render
}

j'ai mis :
void MultipleMeshSceneNode::render()
{
        /// pour chaque position
        for(u32 a=0; a < Instances.size(); a++)
	{
               /// code de render
        }
}

Mon nombre de triangles augmente bien au fur et à mesure que je rajoute des positions mais seul le mesh associés à la dernière position est visible.
Au final, je pense que les meshs sont bien dupliqués mais sont tous affichés à la dernière transformation appliquée.
Si quelqu'un s'y connait en rendu et peut me dire si ce que j'essaie de faire est vain ou pas, j'en serais ravi.

Sinon il y a "ISceneNode* CMeshSceneNode::clone(ISceneNode* newParent, ISceneManager* newManager)" mais je ne sais pas s'il fait juste un doublon du node donc MeshBuffer*2 ou si le node créé utilise le même Buffer que son original.

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
140 invités en ligne
membre en ligne: -
RSS Feed