#0 

09-07-2011 23:04:31

thoced
Membre
Date d'inscription: 02-08-2010
Messages: 65

Bonjour à tous,


Dans un soucis d'optimisation et afin d'éviter d'afficher des nodes qui sont cachés par d'autres, je désire utiliser la technique de l'Occlusion Query.

En cherchant un peu sur le net, j'ai trouvé un bout de code expliquant l'utilisation de l'Occlusion query dans Irrlicht.

voici l'url du site : http://irrlicht.sourceforge.net/forum/v … c1fdff492b

En regardant un peu de plus pret, je constate que pour activer l'utilisation du Query, il faut apparemment utiliser la méthode suivante : driver->createQuery(node, mesh);

Oui mais dans mon cas je vais utiliser un custom Scenenode où je vais à la main afficher les vertex dans la méthode Render. Je n'ai donc pas de mesh à proprement dit.

Si quelqu'un comprends mon problème (qui n'en est peut être pas un car pour ne rien caché, je n'ai pas encore écrit une ligne de code ), pouvez vous m'indiquer comment dois je procéder ?

Merci d'avance
a+, thoced

Hors ligne


#1 

10-07-2011 04:08:57

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

le mesh est censé contenir t'est vertices et indices, qui représenterons ton rendue, de plus tu auras acess a des optimisations de rendue
tu le dit toi même ce n'est pas un réelle probleme

biensur je peut comprendre que l'on ne passe pas par la, dans certain cas, mais je voudrais savoir qu'es qui t'y opose ?
donc apperement, ici rien ne t'empeche de crée ton mesh dynamiquement, au même titre que tu affiche t'est polygone "manuelement"

Code c++ :


            RenderMesh = new CDynamicMeshBuffer(EVT_STANDARD,EIT_16BIT);
            RenderMesh->setHardwareMappingHint(irr::scene::EHM_STATIC, irr::scene::EBT_VERTEX); // spécifie que les vertices ne bouge que très rarement
            RenderMesh->setHardwareMappingHint(irr::scene::EHM_DYNAMIC, irr::scene::EBT_INDEX); // spécifie que les sont souvent modifier
            RenderMesh->getIndexBuffer().setType(video::EIT_16BIT);
            RenderMesh->getVertexBuffer().push_back(video::S3DVertex); //ajoute du vertice (position 0)
            RenderMesh->getIndexBuffer().push_back(n); //ajout d'un indice, 3 indice forme un polygone avec n = position_du_vertice dans les donner



http://irrlicht.sourceforge.net/docu/cl … uffer.html //mesh optimiser pour des modification a chaque rendue
http://irrlicht.sourceforge.net/docu/st … ertex.html

Hors ligne


#2 

10-07-2011 08:53:56

thoced
Membre
Date d'inscription: 02-08-2010
Messages: 65

C'est exacte, je vais tester ceci, merci pour ta réponse rapide et a+,

Hors ligne


#3 

10-07-2011 18:12:29

thoced
Membre
Date d'inscription: 02-08-2010
Messages: 65

Allais je vais encore faire mon ignare mais d'un CDynamicMeshBuffer, comment ensuite obtenir un IMesh ???

Et pour revenir sur mon premier post, Ce n'est pas driver->createQuery mais driver->addocclusionquery

merci d'avance

Hors ligne


#4 

11-07-2011 14:15:26

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

regarde la doc ...

Code c++ :


CDynamicMeshBuffer *var = new ...;
SMesh *mesh = new SMesh();
mesh->addMeshBuffer(var);



edit: CDynamicMeshBuffer dérive de IMeshBuffer ; SMesh dérive de IMesh

Dernière modification par Magun (11-07-2011 14:16:34)

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
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
76 invités en ligne
Aucun membre connecté
RSS Feed