#1 

03-07-2008 12:37:17

Corvet
Membres
Avatar de Corvet
Date d'inscription:
Messages: 7
IP: 82.246.195.189
Courriel

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.

#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


#2 

04-07-2008 08:43:13

Perceval
Membres
Avatar de Perceval
Date d'inscription:
Messages: 105
IP: 90.32.29.86
Courriel

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

        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


#3 

04-07-2008 14:15:18

Corvet
Membres
Avatar de Corvet
Date d'inscription:
Messages: 7
IP: 82.246.195.189
Courriel

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


Hors ligne


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
175 invités en ligne
membre en ligne: -
RSS Feed