#0 

03-07-2008 14:37:17

Corvet
Petit nouveau
Lieu: France, Grenoble
Date d'inscription: 01-07-2008
Messages: 7

Bonjour à tous.
Je dessine un rectangle avec la fonction draw2DRectangle ensuite, j'écris du texte sur le rectangle mais on ne voit pas le texte parce que il est en dessous alors je voudrai savoir comment le mettre devant pour qu'on puisse le voir.
j'ai une idée en mettant le rectangle parent mais je crois pas que ça peut marcher car il ne sont pas membre de la même classe.

Code:

#include <iostream>
#include <irr/irrlicht.h>

using namespace std;

using namespace irr;   // namespace
using namespace core;  // namespace
using namespace scene; // namespace
using namespace video; // namespace
using namespace io;    // namespace
using namespace gui;   // namespace

int main()
{
IrrlichtDevice *device = createDevice( video::EDT_SOFTWARE, dimension2d<s32>(1280, 1024), 32, true, false, false, 0);
    IVideoDriver* driver = device->getVideoDriver();
    ISceneManager* smgr = device->getSceneManager();


    IGUIEnvironment* env = device->getGUIEnvironment();

        IGUISkin* skin = env->getSkin();
        // Chargez font
    IGUIFont* font = env->getFont("media/fontlucida.png");
    if (font)
        skin->setFont(font);

    skin->setFont(env->getBuiltInFont(), EGDF_TOOLTIP);

          
//*******************************************
             gui::IGUIStaticText* nomArme;
    nomArme = device->getGUIEnvironment()->addStaticText(L"Je voudrais qu'on puisse le voir !",
        core::rect<s32>(0,0+750+67,300,25+750+67), true);
    nomArme->setOverrideColor(video::SColor(255,255,176,0));

//*********************************************

        while(device->run())
    {
             
        driver->beginScene(true, true, SColor(255,100,101,140));
        env->drawAll();
        smgr->drawAll();

//Le rectange qui est devant le texte avec un peu de transparence
// pour qu'on puisse se rendre compte du problème.
            driver->draw2DRectangle(video::SColor(200,180,0,0),
        core::rect<s32>(0, 0+750, 300, 200+750));
//*********************************************
   

        driver->endScene();
    }
   //On libère la mémoire en détruisant le device
  device->drop ();
}

Merci.

Hors ligne


#1 

04-07-2008 10:43:13

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

C'est parce que tu ne fais pas les appels dans le bon ordre dans ta boucle principale. Tu dois d'abord apporter toutes les informations sur ta scène avant de la rendre. Là, tu dessines la scène, puis l'interface, et après, tu rajoutes un rectangle qui se retrouve donc devant le reste.

Ton code doit être comme ça

Code:

        while(device->run())
    {

        driver->beginScene(true, true, SColor(255,100,101,140));
        driver->draw2DRectangle(video::SColor(255,180,0,0),
        core::rect<s32>(0, 0+750, 300, 200+750));

        env->drawAll();
        smgr->drawAll();

        driver->endScene();
    }

Hors ligne


#2 

04-07-2008 16:15:18

Corvet
Petit nouveau
Lieu: France, Grenoble
Date d'inscription: 01-07-2008
Messages: 7

Merci de ta réponse Perceval, c'est bien à cause de l'ordre des appels.

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
43 invités en ligne
Aucun membre connecté
RSS Feed