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

DirectX Discussion :

comment reussir a utiliser la fonction WaitForSync


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Par défaut comment reussir a utiliser la fonction WaitForSync
    Bonjour tous!

    Je dois modifier un programme sous windows dans lequel je cherche a ameliorer le rendu des animations 3D en attendant la synchro verticale.
    Le moteur 3D utilise est un peu special, ainsi je ne peux pas utiliser de fonctions telles que SwapBuffers().
    La seule fonction qui me semble utilisable dans mon cas est donc IDirectDrawVideoPort::WaitForSync(), tire de DirectX 7.
    Le probleme est que je n'ai jamais utilise DirectX ou DirectDraw et que je me perds un peu dans le nombre de variables a initialiser pour utiliser cette fonction.

    La, j'en suis a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    LPDIRECTDRAWVIDEOPORT iddvp;
    DDVIDEOPORTDESC port_desc;
    LPDDVIDEOPORTCONTAINER ivpc;
    IDirectDraw7 *idd7;
    HRESULT hr, hrbien=DD_OK;
     
    hr = DirectDrawCreateEx( NULL, (LPVOID *)&idd7, IID_IDirectDraw7, NULL );
    hr = idd7->QueryInterface( IID_IDDVideoPortContainer, (void**)&ivpc );
    ivpc->AddRef();
     
    port_desc.dwSize = sizeof(port_desc);
    port_desc.dwVideoPortID = 0;
    port_desc.dwReserved1 = port_desc.dwReserved2 = port_desc.dwReserved3 = 0;
    port_desc.VideoPortType.dwSize = sizeof(DDVIDEOPORTCONNECT);
     
    hr = ivpc->CreateVideoPort( 0, &port_desc, &iddvp, NULL );
     
    //...
     
    if( hr==DD_OK ) iddvp->WaitForSync( DDVPWAIT_END, 0, 0 );
    Le code compile et s'execute correctement .. jusqu'a la fonction CreateVideoPort() qui retourne E_NOTIMPL, ce qui m'empeche d'acceder a la fonction WaitForSync() tant convoitee..

    Je n'ai aucune idee sur comment initialiser la structure DDVIDEOPORTDESC donc le probleme vient il de la? Ou alors ai je rate d'autres initialisations?

    Sinon quelqu'un connait il d'autres fonctions pour attendre le rafraichissement vertical?

    --
    ps: desole pour les accents, j'ai un clavier qwerty..

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Par défaut
    J'ai finalement trouve ma reponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IDirectDraw7 *idd7;
    HRESULT hr = DirectDrawCreateEx( NULL, (LPVOID *)&idd7, IID_IDirectDraw7, NULL );
    //...
    idd7->WaitForVerticalBlank( DDWAITVB_BLOCKBEGIN, NULL );
    Ca n'etait pas plus complique..

    Sans passer par directdraw, il y a ca :
    http://www.compuphase.com/vretrace.htm
    mais ca m'a fait planter windows XP un coup sur deux..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Comment faire sans utiliser macro (Fonction RECHERCHE, INDEX, ETC....)
    Par anonymous9 dans le forum Excel
    Réponses: 7
    Dernier message: 04/02/2014, 15h57
  2. Réponses: 4
    Dernier message: 05/01/2011, 19h37
  3. Comment faire pour utiliser plusieurs fonctions logiques dans une condition ?
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 04/11/2010, 11h37
  4. Comment utiliser la fonction NBR.JOURS.OUVRES?
    Par MEHCOOPER dans le forum Access
    Réponses: 9
    Dernier message: 20/10/2005, 12h50
  5. Réponses: 11
    Dernier message: 22/12/2003, 21h06

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