#1
20-06-2009 16:52:15
- Lynix
- Membres
- Date d'inscription:
- Messages: 1
- IP: 217.117.48.216
- Courriel
Salut,
Je débute avec Irrlicht et je cherche à l'utiliser avec SFML, en laissant le contrôle de la boucle du programme à la SFML qui dira à Irrlicht d'afficher la scène.
Le problème c'est que Irrlicht semble créer une fenêtre et que tout découle de là.
Donc voila, j'aimerais savoir si c'est possible, si oui je vous prie de me dire comment ![]()
Merci d'avance
Hors ligne
#2
Si ta librarie te permet de récupérer un identifiant de fenêtre, et bien, ça a de grande chance de fonctionner. Ensuite pour rafraichir ta scène, tu peux faire une petite méthode comme ça:
Et voilà.
Et hop...
20-06-2009 19:16:17
- Gehogor
- Membres

- Date d'inscription:
- Messages: 130
- IP: 86.72.254.97
- Courriel
Bonjour, je ne sais pas si j'ai bien compris ta question, mais j'ai peut être été dans le même cas: je voulais afficher le rendu d'Irrlicht dans une fenêtre Qt (librairie c++ également) et non dans la fenêtre créée par Irrlicht. Voilà un morceau:
bool QIrrlicht::Initialisation(QWidget* parent) // un QWidget peut être apparentée à une fenêtre dans la librairie Qt
{
// Initialisation du moteur3D d'Irrlicht ...
SIrrlichtCreationParameters Parameters; // Paramètres d'initialisation vidéo pour Irrlicht
Parameters.DriverType = video::EDT_OPENGL; // Choix du driver OpenGL ou DirectX
Parameters.Bits = 16;
Parameters.Fullscreen = false; // option: pleine écran ou non
Parameters.Stencilbuffer = true;
Parameters.Vsync = true; // option: synchronisation verticale ou non
Parameters.AntiAlias = true; // option: Anti aliésine ou non
Parameters.HighPrecisionFPU = false;
Parameters.EventReceiver = m_ManagerEvent; // pointeur de l'objet getionnaire d'évènement
*winID = parent->winId(); // Récupération de identifiant de la fenêtre Qt
Parameters.WindowId = (int*)*winID; // Avec Linux on fait "parametres.WindowId = winID;"
m_Device = createDeviceEx(Parameters); // Création d'Irrlicht avec fenétre Qt comme support
//m_Device est une variable membre de type "IrrlichtDevice*" dans ma classe QIrrlicht.
}Si ta librarie te permet de récupérer un identifiant de fenêtre, et bien, ça a de grande chance de fonctionner. Ensuite pour rafraichir ta scène, tu peux faire une petite méthode comme ça:
void QIrrlicht::UpdateFrame() // Mise à jour d'Irrlicht
{
if(m_Device->run())
{
m_Driver->beginScene(true, true, SColor(255,120,120,255));
// tous les drawAll, drawLine3D,..., possibles ici.
m_Driver->endScene();
}
}Et voilà.
Et hop...
Hors ligne



