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
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
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