Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Qt/SFML] [Résolu] Intégration de SFML dans Qt  (Lu 2446 fois)

0 Membres et 1 Invité sur ce sujet

HerrMyth

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
    • E-mail
[Qt/SFML] [Résolu] Intégration de SFML dans Qt
« le: Décembre 13, 2015, 12:52:35 am »
Bonjour à tous,

-Encore un post lié à des problèmes d'intégration de SFML dans Qt, désolé de pas être plus original  :-X -

Je me suis lancé depuis peu dans un petit projet de jeu de stratégie, et après avoir réfléchi au gameplay, au design et tout cela, j'ai décidé de mettre les mains dans le cambouis, et commencer à coder...

J'ai donc opté pour le combo SFML/Qt pour pouvoir profiter des possibilités de GUI de Qt (nécessaire pour de la stratégie) , le rendering sera effectué par SFML..

J'ai donc essayé d'intégrer SFML dans un widget customisé, dérivant du QWidget comme le tutoriel http://www.sfml-dev.org/tutorials/1.6/graphics-qt.php le propose. (Avec de petites modifs pour adapter le code à la version actuelle)

Tout fonctionne, ou presque : Le Widget-customisé-SFML reste déséspérément vide : Que j'essaie d'afficher une image ou tout simplement une shape, rien ne s'affiche comme prévu dans le widget : Il affiche plus précisément un "snapshot" la fenêtre inférieure présente sur le bureau lors de son premier affichage, comme ici :


Rq : Les bordures bleues présentes dans l'image correspondent au Widget "père" du Widget SFML

Pourtant le widget est bien "mis à jour", les dumps que j'effectue sont formels, le timer s'ecoule bien et envoie le signal voulu dans le slot repaint() pour mettre à jour le widget. Les fonctions OnUpdate() et display() sont bien visitées dans le debugger... Bref j'y comprends rien...

Je ne sais pas si mettre tout le code sera bien utile, puisqu'il s'agit du code issu du tutoriel un peu modifié pour être sur du probleme (Si nécessaire je peux l'ajouter ^^)

Une petite idée de ce qu'il se passe ? Est-ce lié à SFML, à Qt ?

Plusieurs infos:

-Je bosse actuellement sur du "vieil" hardware (laptop de 2005, Win XP, derniers drivers graphiques de 2008), peut être cela joue t'il...

-Quand je ne wrappe pas SFML dans un QWidget, les objets voulus s'affichent comme prévu

-J'utilise Qt 5.0.1 et SFML 2.3.2

Merci d'avance :D
« Modifié: Décembre 20, 2015, 01:11:52 am par HerrMyth »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [Qt/SFML] Intégration de SFML dans Qt
« Réponse #1 le: Décembre 13, 2015, 12:13:36 pm »
Il me semble que SFML ne supporte plus officiellement Windows XP (il faudrait confirmer par les dernières personnes ayant fait des modifs au back-end Windows). Donc en partant de là, tout est possible malheureusement.

Sinon quelqu'un vient de poster un code qui marche bien, tu peux toujours essayer :
http://en.sfml-dev.org/forums/index.php?topic=18062.msg140437#msg140437
« Modifié: Décembre 13, 2015, 12:16:24 pm par Laurent »
Laurent Gomila - SFML developer

HerrMyth

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
    • E-mail
Re : [Qt/SFML] Intégration de SFML dans Qt
« Réponse #2 le: Décembre 15, 2015, 10:43:51 am »
Bonjour, et merci de votre réponse :)

J'ai essayé d'utiliser le code présenté sous le lien, mais il manque potentiellement quelques fichiers (notamment la classe mainwindow) pour que je puisse le reproduire à l'identique.

J'ai essayé de boucher les trous manquant dans l'exemple avec un peu de code perso (que j'espère fonctionnel ^^), mais toujours rien.

Normalement je devrais pouvoir essayer mon code sous vista d'ici ce soir, histoire de déterminer si XP est bel est bien en cause (ce qui retarderait d'encore plus mon projet  :'( ) je vous tiens au courant :D

HerrMyth

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
    • E-mail
Re : [Qt/SFML] Intégration de SFML dans Qt
« Réponse #3 le: Décembre 20, 2015, 01:09:53 am »
Bonsoir, désolé du retour tardif...

Après avoir galéré un peu plus sur XP ou Vista , je me suis rendu compte que je m'étais trompé d'implémentation dans le choix de "désambiguation" de la méthode create(WindowHandle) et avait tapé comme un boeuf QWidget::create([..])...du coup forcément ca ne fonctionnait pas  :-X

L'implémentation à choisir était bien celle de SFML, en utilisant un trick de cast (merci stackoverflow  ::) ) :
        sf::RenderWindow::create(reinterpret_cast<sf::WindowHandle>(winId()));

Et depuis, SFML et Qt se sont mariés et on un affreux bébé en route ( pas de date de release  :P )
« Modifié: Décembre 20, 2015, 01:12:56 am par HerrMyth »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [Qt/SFML] [Résolu] Intégration de SFML dans Qt
« Réponse #4 le: Décembre 20, 2015, 08:25:03 am »
Magnifique :P
Laurent Gomila - SFML developer