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