Bonjour,
j'ai une petite appli' qui utilise DirectX pour afficher en plein écran, point par point, codée en C++ MFC sous VS2005 :
Tout ça se passe bien et ça s'affiche sans soucis !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 m_pD3D9Device->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,0x00000000,1.0f,0); m_pD3D9Device->BeginScene(); m_pD3D9Device->SetStreamSource(0,m_pD3D9VertexBuffer,0,sizeof(DX_POINT)); m_pD3D9Device->DrawPrimitive(D3DPT_POINTLIST,0,m_sizeOfBufferOut); m_pD3D9Device->EndScene(); m_pD3D9Device->Present(NULL, NULL, NULL, NULL);
Le problème c'est que je (du moins ma CG) calcule en général plus vite que l'écran n'affiche, alors que j'aimerai que chaque frame soit affiché.
Si je suis en 72Hz sur l'écran par exemple, j'aimerai que ma carte ne calcule que 72 frames par seconde !
Y'a-t-il un moyen intégré à directx pour que la fonction Present() n'affiche qu'au rafraichissement écran (et soit bloquante) ?
Ou faut-il que je fasse moi même une clock dans mon programme en espérant que ça tombe bien ?
J'ai pas trouvé d'info pour l'instant sur le net, alors si quelqu'un a une idée ... merci!
Partager