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

Merci d'avance


Hors ligne


#2 

20-06-2009 19:16:17

Gehogor
Membres
Avatar de Gehogor
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... wink

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