J'ai récemment commencé à apprendre la programmation DirectX en C++ et j'ai rencontré un problème mineur. Le fait est que mon exercice me demande de changer les couleurs d'une application DirectX de l'une à l'autre. J'ai une fonction qui fait que:Mettre un délai entre les images dans DirectX
void render_frame(void)
{
// start the random generator
srand(time(NULL));
// clear the window to random color
d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(rand() % 255, rand() % 255, rand() % 255), 1.0f, 0);
// begin/end/display scene
d3ddev->BeginScene();
d3ddev->EndScene();
d3ddev->Present(NULL, NULL, NULL, NULL);
}
Il fonctionne, mais il est en fonction du temps de retard() et je me demande s'il y a une meilleure contrepartie dans la bibliothèque Direct3D. Par exemple, si je pouvais appeler cette fonction pour la couleur et un retard spécifique dans la chaîne comme ceci:
void render_frame_red(void);
delay(1000);
void render_frame_blue(void);
delay(1000);
Je sais que Sleep() fonction existe dans la bibliothèque standard, mais il gèle littéralement ma fenêtre d'application (je peux » t interagir avec lui pendant le délai). Peut-être que je peux régler le temps à différents tickrate afin qu'il se mette à jour aussi souvent que je le veux? Je sais que c'est une petite chose et je comprendrais probablement plus tard mon parcours avec la programmation 3D, mais cela ne me ferait pas de mal si j'en savais plus sur le fonctionnement de DirectX.
N'appelez jamais srand() une seule fois dans un programme. –
Oui, c'est mon mauvais. Je l'appelle habituellement au début de ma fonction main() (WinMain() dans ce cas). – RPAnimation
@NeilButterworth En fait une fois dans un fil. Ou même utiliser ':: std :: random_device'. En ce qui concerne les questions, DirectX ne s'occupe pas du tout de l'heure. Toutes les fonctionnalités associées existent maintenant dans DXGI (voir [IDXGISwapChain] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb174569 (v = vs.85) .aspx)) et les temporisateurs système. – VTT