Forum de la communauté SFML

Aide => Général => Discussion démarrée par: Alundra le Mai 21, 2014, 03:13:18 pm

Titre: QT 5.3 PaintEngine probleme
Posté par: Alundra le Mai 21, 2014, 03:13:18 pm
Salut,
En réalité le problème concerne tout rendu dans un "QWidget" avec QT 5.3, pas seulement SFML.
Sachant que un tutorial sur le sujet existe pour SFML alors j’espère que une réponse pourra être trouvé ici.
J'ai mis un message sur le QT-Bug report, pour le moment il a pas été analysé, sur qt-centre pas de réponse.
Le problème est que si on reimplémente "paintengine()" de "QWidget" avec juste "return NULL", il n'y a plus aucun rendu de visible, c'est comme si le widget ne faisait jamais d'update, si on reimplémente pas il y a un affichage mais un scintillement est visible.
Le problème n’était pas avec QT 5.1, depuis le passage a QT 5.3 le problème est la, je n'ai pas testé QT 5.2.
Avec espoir que une solution existe rapidement.
Merci de votre aide.
Alundra
Titre: Re : QT 5.3 PaintEngine probleme
Posté par: Laurent le Mai 21, 2014, 04:17:16 pm
Qt 5.3 est sorti hier, c'est un peu ambitieux d'espérer une réponse de notre part si le problème est effectivement présent depuis cette version uniquement... D'autant plus que le problème n'a rien à voir avec SFML.
Titre: Re : QT 5.3 PaintEngine probleme
Posté par: Alundra le Mai 21, 2014, 07:49:44 pm
D'autant plus que le problème n'a rien à voir avec SFML.
Le problème est aussi sur un QWidget avec SFML du coups cela pourrait aider des gens sur ce sujet aussi.
Mais j'avoue que la je bloque pas mal et pourtant ça se trouve une solution simple existe.
Si quelqu'un a une idée je suis preneur en tout cas.
Code : http://pastebin.com/Z6XsXdmk
Ici un log message sur chaque fonction, au lancement ca donne :
Citer
(19:58:39) paintEngine
(19:58:39) IRenderWidget
(19:58:39) showEvent
(19:58:39) resizeEvent
(19:58:39) resizeEvent
(19:58:39) resizeEvent
(19:58:39) resizeEvent
(19:58:39) resizeEvent
(19:58:39) resizeEvent
QT 5.3 ne fait aucun appel a "paintEvent" pourtant :
Citer
connect( &m_Timer, SIGNAL( timeout() ), this, SLOT( repaint() ) );
Titre: Re : QT 5.3 PaintEngine probleme
Posté par: Alundra le Mai 21, 2014, 08:55:45 pm
Problème réglé, pour link SFML a QT 5.3 il faut faire la meme chose.
Il faut link un "slot" qui contient exactement le meme code que dans le PaintEvent :
Citer
void IRenderWidget::UpdateOneFrame()
{
  if( m_Initialized )
  {
    // Set the current render window.
    DE::CEngine::GetRenderer().SetRenderWindow( m_RenderWindow );

    // Update the render window widget.
    OnUpdate();

    // End of the rendering.
    DE::CEngine::GetRenderer().EndOfRendering();
  }
}
Citer
connect( &m_Timer, SIGNAL( timeout() ), this, SLOT( UpdateOneFrame() ) );