03-01-2009 12:12:05
- thealone
- Membres
- Date d'inscription:
- Messages: 2
- IP: 90.29.33.248
- Courriel
Bonjour à tous,
Je suis en train d'apprendre à utiliser Irrlicht avec un tutoriel sur le Site du Zero, et j'en suis sur le chapitre des GUI, j'essaye d'afficher du texte mais quand je compile mon compilo me renvoit une erreur, pour info j'utilise CodeBlocks comme IDE, et la version 1.5 d'Irrlicht, donc voici le code :
#include <iostream>
#include <IRR/irrlicht.h>
using namespace irr;
int main(void)
{
IrrlichtDevice *device = createDevice (video::EDT_OPENGL, core::dimension2d<s32>(800,600),32,false,true,false,0);
video::IVideoDriver* driver = device->getVideoDriver ();
scene::ISceneManager *scenegraph = device->getSceneManager ();
gui::IGUIEnvironment *GUI = device->getGUIEnvironment();
core::vector3df posCam;
scene::ICameraSceneNode *camera = scenegraph->addCameraSceneNodeFPS (0,80.0f,0.5f);
camera->setPosition(core::vector3df(10.0, 50.0, -50.0));
scene::IAnimatedMesh *room = scenegraph->getMesh("room.3ds");
scene::IMeshSceneNode *Nroom = scenegraph->addMeshSceneNode(room->getMesh(0)); //atachement à la node
Nroom->setMaterialFlag(video::EMF_LIGHTING, true); //material, sensible à la lumière pour true
scenegraph->getMeshManipulator()->makePlanarTextureMapping(room->getMesh(0), 0.004f);
Nroom->setMaterialTexture( 0, driver->getTexture("rockwall.bmp") );
Nroom->getMaterial(0).Shininess = 0.0f;
scene::ILightSceneNode* lum1 = scenegraph->addLightSceneNode(Nroom, core::vector3df(150,210,250),video::SColorf(0.9f, 0.9f, 1.0f, 0.0f), 100.0f);
scene::ILightSceneNode* lum2 = scenegraph->addLightSceneNode(Nroom, core::vector3df(-350,170,0),video::SColorf(1.0f, 0.9f, 0.9f, 0.0f), 100.0f);
scene::ILightSceneNode* lum3 = scenegraph->addLightSceneNode(Nroom, core::vector3df(140,230,-270),video::SColorf(0.9f, 1.0f, 0.9f, 0.0f), 100.0f);
gui::IGUIEnvironment *texte = gui->addStaticText(L"bouh", core::rect<s32>(100,20,400,60), true, true, 0, -1, true); //c'est cette ligne qui pose aparement probleme
//La boucle de rendu
while (device->run ())
{
//On indique qu'on démarre la scène
driver->beginScene (true, true, video::SColor (255,255,255,255));
//On calcule le rendu
scenegraph->drawAll ();
gui->drawAll();
//On affiche le rendu à l'écran
driver->endScene ();
}
device->drop ();
return 0;
}L'erreur renvoyer est la suivante :
error: expected primary-expression before '->' token
Je vous remercie d'avance !
Hors ligne
03-01-2009 12:32:05
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 78.115.112.153
- Courriel Site web
regarde ton IGUIEnvironment * s'appelle GUI et non gui ![]()
et puis il faut passer par un IGUIStaticText * et non un IGUIEnvironement *
il faut donc écrire :
gui::IGUIStaticText *texte = GUI->addStaticText(L"bouh", core::rect<s32>(100,20,400,60), true, true, 0, -1, true);
ps : jais écris les fonction de tête il se peut que se ne soit pas l'orthographe exacte ^^
Hors ligne
03-01-2009 12:50:07
- thealone
- Membres
- Date d'inscription:
- Messages: 2
- IP: 90.29.33.248
- Courriel
Sa marche !
j'avait essayer de mettre GUI à la place de gui mais avec IGUIEnvironment et non IGUIStaticText. Mal lu désolée !
Merci beaucoup en tout cas !
Hors ligne
05-01-2009 13:16:08
- Metallizer
- Membres

- Date d'inscription:
- Messages: 100
- IP: 90.19.160.202
- Courriel Site web
En effet il s'agit d'une mauvaise utilisation de tes variables, pour mieux comprendre le message d'erreur et apporter une précision, en utilisant -> sur "gui", tu as fait appel au namespace gui définit par Irrlicht, si tu avais utilisé une autre variable du style "monGui->addStaticText(...)", tu aurais eu plutôt un message d'erreur du style "monGui was not declared...".
C'est pour ça qu'il vaut mieux utiliser des noms d'objets dont on est sûr qu'ils ne risquent pas de ressembler à des objets déjà définis par Irrlicht ou la STL.
Hors ligne



