bonjour tout le monde,
voilà j'ai un problème avec mon code et je ne sais pas comment le résoudre. J'ai posé la question sur le forum du siteduzero mais le problème n'a pas été résolu.
Comme il concerne irrlicht je vais maintenant vous le présenter.
J'ai une classe afficherImage qui doit charger une image et récupérer sa position. Mais il doit y avoir un problème quelque part parce que quand je veux récupérer la position de l'image dans la boucle de rendu de mon main, ma compilation plante.
Voici mon code:
main.cpp
#include <irrlicht.h>
#include <iostream>
#include "main.hpp"
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
using namespace std;
AfficherImage* afficherImage;//C'est la seule chose qui est dans le main.hpp donc je le met ici
int main()
{
video::E_DRIVER_TYPE driverType = video::EDT_OPENGL;
IrrlichtDevice *Device = createDevice(EDT_SOFTWARE, dimension2d<s32>(800, 600), 16,
false, false, false, 0);
if (Device == 0)
return 1; // could not create selected driver.
Device->setWindowCaption(L"Equilibrum : La malediction");
IVideoDriver* driver = Device->getVideoDriver();
ISceneManager* smgr = Device->getSceneManager();
IGUIEnvironment* guienv = Device->getGUIEnvironment();
afficherImage->afficherMenu();
Device->setResizeAble(true);
while(Device->run())
{
u32 time = Device->getTimer()->getTime();
driver->beginScene(true, true, SColor(0,0,0,0));
driver->draw2DImage(afficherImage->get_interfaceMenu(), afficherImage->get_rectangle(),
SColor (255,255,255,255), true);
//pour afficher les positions du curseur dans la barre de titre :
core::position2d<s32> mouse = Device->getCursorControl()->getPosition();
//pour afficher les positions du curseur dans la barre de titre :
core::stringw titre = L"Positions de la souris :";
titre += mouse.X;
titre += L"-";
titre += mouse.Y;
Device->setWindowCaption(titre.c_str());
smgr->drawAll();
guienv->drawAll();
driver->endScene();
}
Device->drop();
return 0;
}
afficherImage.cpp
#include <irrlicht.h>
#include <iostream>
#include "afficherImage.hpp"
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
using namespace std;
int AfficherImage::afficherMenu()
{
interfaceMenu = driver->getTexture ("Interface/interface_hors_jeu/menu_principale/interfaceMenu1.PNG");
if (interfaceMenu == 0)
{
cout << "probleme de chargement de l'image" << endl;
return 1;
}
//La transparence pour le fond
driver->makeColorKeyTexture (interfaceMenu, video::SColor (0,255,0,255));
//On récupère les dimensions de l'image
dimension2d<s32> taille = interfaceMenu->getSize ();
//On crée une position qui va représenter l'origine
position2d<s32> position0;
position0.X = 0;
position0.Y = 0;
//Et maintenant la position du coin bas droit du rectangle en se servant des dimensions de l'image
position2d<s32> position1;
position1.X = taille.Width;
position1.Y = taille.Height;
//On crée la variable rectangle
rect<s32> rectangle;
rectangle.UpperLeftCorner = position0;
rectangle.LowerRightCorner = position1;
}
afficherImage.hpp
#include <irrlicht.h>
#include <iostream>
#ifndef DEF_AFFICHER_IMAGE
#define DEF_AFFICHER_IMAGE
class AfficherImage
{
public:
AfficherImage();
~AfficherImage();
int afficherMenu();
irr::core::position2d<irr::s32> get_position0()
{
return position0;
}
irr::core::position2d<irr::s32> get_position1()
{
return position1;
}
irr::core::rect<irr::s32> get_rectangle()
{
return rectangle;
}
irr::video::ITexture* get_interfaceMenu()
{
return interfaceMenu;
}
private:
irr::video::IVideoDriver* driver;
irr::video::ITexture *interfaceMenu;
irr::core::position2d<irr::s32> position0;
irr::core::position2d<irr::s32> position1;
irr::core::rect<irr::s32> rectangle;
};
#endif
et voici le rapport d'erreur:
main.cpp:54: error: no matching function for call to `irr::video::IVideoDriver::draw2DImage(irr::video::ITexture*, irr::core::rect<irr::s32>, irr::video::SColor, bool)'
C:/Program Files/CodeBlocks/mingw32/include/Irrlicht/IVideoDriver.h:481: note: candidates are: virtual void irr::video::IVideoDriver::draw2DImage(irr::video::ITexture*, const irr::core::position2d<irr::s32>&)
C:/Program Files/CodeBlocks/mingw32/include/Irrlicht/IVideoDriver.h:498: note: virtual void irr::video::IVideoDriver::draw2DImage(irr::video::ITexture*, const irr::core::position2d<irr::s32>&, const irr::core::rect<irr::s32>&, const irr::core::rect<irr::s32>*, irr::video::SColor, bool)
C:/Program Files/CodeBlocks/mingw32/include/Irrlicht/IVideoDriver.h:523: note: virtual void irr::video::IVideoDriver::draw2DImage(irr::video::ITexture*, const irr::core::position2d<irr::s32>&, const irr::core::array<irr::core::rect<irr::s32>, irr::core::irrAllocator<irr::core::rect<irr::s32> > >&, const irr::core::array<irr::s32, irr::core::irrAllocator<irr::s32> >&, irr::s32, const irr::core::rect<irr::s32>*, irr::video::SColor, bool)
C:/Program Files/CodeBlocks/mingw32/include/Irrlicht/IVideoDriver.h:535: note: virtual void irr::video::IVideoDriver::draw2DImage(irr::video::ITexture*, const irr::core::rect<irr::s32>&, const irr::core::rect<irr::s32>&, const irr::core::rect<irr::s32>*, irr::video::SColor*, bool)
Sa fait trois jour que j'ai ce problème et je ne vois aucune réponse. Est-ce que vous pourriez m'aider svp ?
Merci d'avance.