#0 

26-09-2009 11:19:49

rufford
Petit nouveau
Date d'inscription: 26-09-2009
Messages: 2

Bonjour,
Je souhaite afficher un cube, pour cela j'utilise le code suivant qui devrait permettre de l'afficher via des triangles ou via des carrés
JE NE SOUHAITE PAS UTILISER LE CUBE NI LES TRIANGLES, je souhaite utiliser les carrés, je me fiche des problèmes de performances pour le moment, j'y arrivait aisément directement avec opengl, je mouline dans la bouillie via irrlicht!!

Code:

//called once per instance of XXXX
            void XXXX::init ( void ) {


                registerObservableEventType ( EV_CARD_SWAP );
                registerObservableEventType ( EV_CARD_SUITE_OR_VALUE_CHANGED );

                m_px = m_confManager.getFloat ( IRRCARD32_F_POSITIONX );
                m_py = m_confManager.getFloat ( IRRCARD32_F_POSITIONY );
                m_pz = m_confManager.getFloat ( IRRCARD32_F_POSITIONZ );

                m_wx = m_confManager.getFloat ( IRRCARD32_F_WIDTHX );
                m_wy = m_confManager.getFloat ( IRRCARD32_F_WIDTHY );
                m_wz = m_confManager.getFloat ( IRRCARD32_F_WIDTHZ );

                Material.Wireframe = false;
                Material.Lighting = false;

                Vertices[0] = irr::video::S3DVertex ( 0, 0, 0,                  -1, -1, -1,
                                video::SColor(255,0,255,255), 0, 1);

                Vertices[1] = irr::video::S3DVertex ( 0, m_wy, 0,               -1,1,-1,
                                video::SColor(255,0,255,255), 0, 1);

                Vertices[2] = irr::video::S3DVertex ( m_wx, m_wy, 0,            1,1,-1,
                                video::SColor(255,0,255,255), 0, 1);

                Vertices[3] = irr::video::S3DVertex ( m_wx, 0, 0,               1,-1,-1,
                                video::SColor(255,0,255,255), 0, 1);

                Vertices[4] = irr::video::S3DVertex ( 0 , 0 , m_wz ,           -1,-1,1,
                                video::SColor(255,0,255,255), 0, 1);

                Vertices[5] = irr::video::S3DVertex ( 0 , m_wy , m_wz ,           -1,1,1,
                                video::SColor(255,0,255,255), 0, 1);

                Vertices[6] = irr::video::S3DVertex ( m_wx , m_wy , m_wz ,           1,1,1,
                                video::SColor(255,0,255,255), 0, 1);

                Vertices[7] = irr::video::S3DVertex ( m_wx , 0 , m_wz ,           1,-1,1,
                                video::SColor(255,0,255,255), 0, 1);

                Box.reset(Vertices[0].Pos);
                Box.addInternalPoint(Vertices[1].Pos);
                Box.addInternalPoint(Vertices[2].Pos);
                Box.addInternalPoint(Vertices[3].Pos);
                Box.addInternalPoint(Vertices[4].Pos);
                Box.addInternalPoint(Vertices[5].Pos);
                Box.addInternalPoint(Vertices[6].Pos);
                Box.addInternalPoint(Vertices[7].Pos);

                update ( );

            }


            void XXXX::render ( void ) {

                u16 indices_quads[] = {
                    0,1,2,3,
                    3,2,6,7,
                    7,4,5,6,
                    4,0,1,5,
                    1,5,6,2,
                    0,3,7,4
                };

                u16 indices_triangles[] = {
                    0, 1, 3,
                    1, 2, 3,
                    3, 2, 7,
                    2, 6, 7,
                    7, 6, 5,
                    5, 4, 7,
                    5, 1, 0,
                    5, 0, 4,
                    5, 2, 1,
                    5, 6, 2,
                    0, 3, 4,
                    4, 3, 7
                };

                getEngine ( ).getDriver ( )->setMaterial ( Material );
                //getEngine ( ).getDriver ( )->setTransform ( video::ETS_WORLD, AbsoluteTransformation );
                //getEngine ( ).getDriver ( )->drawIndexedTriangleList ( &(Vertices[0]), 8, &(indices_triangles[0]), 12 );

                //getEngine ( ).getDriver ( )->setMaterial ( Material );
                getEngine ( ).getDriver ( )->drawVertexPrimitiveList ( &(Vertices[0]), 8, &(indices_quads[0]), 1, EVT_STANDARD, EPT_QUADS );
                getEngine ( ).getDriver ( )->drawVertexPrimitiveList ( &(Vertices[0]), 8, &(indices_quads[4]), 1, EVT_STANDARD, EPT_QUADS );
                getEngine ( ).getDriver ( )->drawVertexPrimitiveList ( &(Vertices[0]), 8, &(indices_quads[8]), 1, EVT_STANDARD, EPT_QUADS );
                getEngine ( ).getDriver ( )->drawVertexPrimitiveList ( &(Vertices[0]), 8, &(indices_quads[12]), 1, EVT_STANDARD, EPT_QUADS );
                getEngine ( ).getDriver ( )->drawVertexPrimitiveList ( &(Vertices[0]), 8, &(indices_quads[16]), 1, EVT_STANDARD, EPT_QUADS );
                getEngine ( ).getDriver ( )->drawVertexPrimitiveList ( &(Vertices[0]), 8, &(indices_quads[20]), 1, EVT_STANDARD, EPT_QUADS );

            }

Pas de bol, rien ne s'affiche si j'utilise la methode drawVertexPrimitiveList, en revanche pas de problème si je decommente la ligne getEngine ( ).getDriver ( )->drawIndexedTriangleList ( &(Vertices[0]), 8, &(indices_triangles[0]), 12 ); pour l'afficher sous forme de triangles.
Qu'ai-je omis ou mal fait?

Merci.

Hors ligne


#1 

26-09-2009 16:18:35

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Hmmm, a première vue cela semble pourtant correct. Je vais tester cela pour voir si je trouve l'origine du soucis.

A' ta l'heure wink


Force et sagesse...

Hors ligne


#2 

26-09-2009 16:33:41

rufford
Petit nouveau
Date d'inscription: 26-09-2009
Messages: 2

oki merci.

Hors ligne


#3 

26-09-2009 17:53:05

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Bon, ben écoute, chez moi ton code fonctionne bien, (test avec OpenGL).

La seule chose que j'ai changé, c'est que j'ai mis les valeurs suivantes:

Code c++ :


                m_px = 0;
                m_py = 0;
                m_pz = 0;

                m_wx = 20;
                m_wy = 20;
                m_wz = 20;



dans la mesure ou je n'avais pas le reste de ta classe, et pour assurer les éventuel soucis d'élément trop grand pour être vue.
Mais sinon, j'ai employé ton code tel-quel.


Force et sagesse...

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
1426 sujets
11116 messages
Dernier membre inscrit: Bidule
19 invités en ligne
Aucun membre connecté
RSS Feed