#0 

20-06-2009 18:52:15

Lynix
Petit nouveau
Date d'inscription: 20-06-2009
Messages: 1

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


#1 

20-06-2009 21:16:17

Gehogor
Abonné
Lieu: Paris
Date d'inscription: 02-06-2009
Messages: 130
Corrections: 7

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:

Code:

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:

Code:

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

Dernière modification par Gehogor (21-06-2009 00:27:37)


Et hop... wink

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
76 invités en ligne
Aucun membre connecté
RSS Feed