최근에 C++로 DirectX 프로그래밍을 배우기 시작했고 사소한 문제가 발생했습니다.DirectX에서 프레임 사이에 지연 넣기
중요한 것은 내 운동장에서 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);
}
그것은 작동을하지만, 시간() 지연에 따라 그리고 Direct3D를 라이브러리에 더 나은 대응이 있는지 궁금하다. '내가 할 수있는 (표준 라이브러리에있는 I)가 (이 함수의 수면을 알고
void render_frame_red(void);
delay(1000);
void render_frame_blue(void);
delay(1000);
을하지만, 말 그대로 내 응용 프로그램 창을 동결 예를 들어 나는이 같은 체인의 특정 색상과 지연을 위해이 함수를 호출 할 수 있다면 지연 동안 그것과 상호 작용하지 마라). 어쩌면 나는 다른 tickrate에 시간을 정할 수 있기 때문에 원하는만큼 자주 업데이트 할 것입니다.
나는 그것이 작은 것이고 나중에 3D 프로그래밍을 사용하여 여행을 떠올리 겠지만, DirectX에서 어떻게 작동하는지 더 많이 알면 큰 어려움이 없을 것입니다.
프로그램에서 한 번만 srand()를 호출하십시오. –
네, 저의 잘못입니다. 나는 보통 main() 함수 (이 경우에는 WinMain())의 시작 부분에서 호출합니다. – RPAnimation
@NeilButterworth 실제로 스레드에서 한 번. 아니면':: std :: random_device'를 사용하십시오. 질문에 관해서는, DirectX는 시간을 전혀 다루지 않습니다. 이제는 관련된 모든 기능이 DXGI에 존재합니다 ([IDXGISwapChain] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb174569(v=vs.85) .aspx) 참조) 및 시스템 타이머. – VTT