IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[Win32] Probl�me d'affichage


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif Avatar de oxyde356
    Homme Profil pro
    Ing�nieur Recherche Imagerie
    Inscrit en
    F�vrier 2006
    Messages
    797
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Recherche Imagerie

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 797
    Par d�faut [Win32] Probl�me d'affichage
    Bonjour � tous et d�soler d'avance dans le cas o� je post dans la mauvaise section car je ne suis pas s�r ^^
    Je bosse actuellement sur un projet de Viewer de fichiers CAO en C++/Win32/OpenGL, je travaille avec l'api windows en C (donc pas de MFC) et j'ai un petit probl�me d'affichage. Enfaite j'ai une fen�tre principale qui contient plusieurs sous-fen�tres, contenant statusbar, toolbar, un treeview et une fen�tre contenant un affichage OpenGL.
    En gros dans ma boucle de message j'ai �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    {
    	TranslateMessage(&msg);
    	DispatchMessage(&msg);
    }
    else
    {
    	OpenGL_Render();
    }
    OpenGL_Render met � jour la sc�ne et finit par un SwapBuffer pour l'afficher, et dans mon windowproc je fais :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    case WM_PAINT:
    {
    	SwapBuffers(g_pEngine->getDevice());
    	ValidateRect(hWnd,NULL);
    	break;
    }
    Vu que mon application est fen�tr� et que des boites de dialogues peuvent passer dessus cela aurait du me permettre de rafraichir la sc�ne au bon moment.
    Donc bon d�j� premier probl�me dans mon WM_PAINT, Swapbuffer ne convient pas, j'aimerais juste que OpenGL reaffiche la derni�re frame (qui est devenu le front buffer apr�s le swap) de sorte que si l'utilisateur d�place une boite de dialogue sur ma fen�tre celle-ci soit comme mis en pause mais qu'il n'y est pas d'artefacts.
    De plus, et l� il n'est pas question d'OpenGL, j'ai des probl�mes d'actualisation d'affichage avec les autres fen�tres, quand une boite de dialogue se met sur mon treeview il peut arriver qu'un artefact se mette dessus...
    Encore plus g�nant, � un momen j'utilise une fen�tre non-modale pour g�rer une barre de chargement et l� c'est le drame, la fen�tre s'affiche vraiment tr�s mal, on la voit compl�te une fraction de seconde quand elle apparait, puis on dirait que la fen�tre principale essaye de dessiner par dessus, au final il reste plus qu'un cadre gris et les barres de chargement qui �voluent (on ne voit m�me plus les textes au dessus de la barre de chargement).

    Si quelqu'un � d�j� rencontrer ce genre de probl�me ou a une id�e pour les r�soudre je suis preneur.
    Merci d'avance

  2. #2
    Membre tr�s actif Avatar de oxyde356
    Homme Profil pro
    Ing�nieur Recherche Imagerie
    Inscrit en
    F�vrier 2006
    Messages
    797
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Recherche Imagerie

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 797
    Par d�faut
    Bon enfaite j'ai l'impression que si je fais :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    case WM_PAINT:
    {
    	OpenGL_Render();
    	ValidateRect(hWnd,NULL);
    	break;
    }
    Ca r�gle mon probl�me pour ma fen�tre OpenGL.

    Donc le reste de mon probl�me c'est juste de l'api windows. J'ai une fen�tre non modale qui bug graphiquement et qui laisse des artefacts sur ma fen�tre modale principale ... une id�e ?

  3. #3
    Expert confirm�

    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    4 253
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par d�faut
    Je veux pas dire de b�tise mais:

    1. Ou tu as une appli 'statique' (le contenu OGL n'est modifi� que par des actions utilisateurs), dans ce cas, tu peux utiliser le WM_PAINT, et faire le render / swap dedans.

    2. Ou ton appli est 'anim�e' (jeu vid�o), et dans ce cas on a comme boucle principale (en tout cas dans l'id�e):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    while (!ended) {
        Render();
        Swap();
        while (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
        {
    	TranslateMessage(&msg);
    	DispatchMessage(&msg);
        }
        Sleep(0);
    }
    Je me trompe ?

    [edit] Tu peux utiliser aussi un 'timer' pour faire le rendu, mais adieu les 1000fps dans ce cas !

  4. #4
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par nicroman Voir le message
    [edit] Tu peux utiliser aussi un 'timer' pour faire le rendu, mais adieu les 1000fps dans ce cas !
    �a c'est bien un truc qui m'�nerve. Un jeu va souvent tourner sans cesse � 100% CPU (et donc chauffer, consommer plus, faire faire du bruit au ventillos) m�me si au final il affiche des images sur un �cran � 50Hz, et qu'il effectue ses calculs de physique ou d'IA encore moins vite. Tout �a parce que certains sont focalis�s sur la fr�quence d'image comme Alpha et Omega de la qualit� d'un jeu...
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  5. #5
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par d�faut
    Bas c'est surtout que si les fps sont sup�rieur � la fr�quence de rafraichissement �a aura des cons�quences graphiques... (scission de l'�cran).
    Et en plus l'oeil humain fait pas la diff�rence au del� des 30 ou 60, je sais jamais.

  6. #6
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par Goten Voir le message
    Et en plus l'oeil humain fait pas la diff�rence au del� des 30 ou 60, je sais jamais.
    Ce n'est pas uniquement question de fr�quence. J'ai eu des exemples o� 60Hz ne faisait pas une animation totalement fluide, alors que 30 peuvent suffire largement dans d'autres cas. Je pense que la diff�rence entre deux images successives est aussi un facteur d�terminant.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

Discussions similaires

  1. Probl�me d'affichage
    Par mustang-gx dans le forum Bases de donn�es
    R�ponses: 8
    Dernier message: 26/01/2005, 22h54
  2. Probl�me d'affichage avec trace
    Par WriteLN dans le forum Flash
    R�ponses: 10
    Dernier message: 22/10/2003, 16h59
  3. [Kylix] probl�me d'affichage
    Par scalvi dans le forum EDI
    R�ponses: 1
    Dernier message: 18/06/2003, 10h07
  4. R�ponses: 1
    Dernier message: 06/03/2003, 11h57
  5. probl�me d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    R�ponses: 7
    Dernier message: 29/08/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo