そこで、ゲームで重要なFPSの調節をしようかと思っているんですが、
Direct3D 10 には、FPSの調整が、ライブラリにあるので、それにまかせようとしました
そして、60FPSになっているか確認しても、全然60フレームになりません
せいぜい、30FPSくらいで、ウィンドウの大きさを変えると確かに60FPS,100FPSほどでるのですが、
60FPSで固定したいです
しかしライブラリにFPS調整機能があるのですが、60FPSで固定するにはどうしたらいいのでしょうか?
DXGI_SWAP_CHAIN_DESC sd;
ZeroMemory( &sd, sizeof( sd ) );
sd.BufferCount = 1;
sd.BufferDesc.Width = width;
sd.BufferDesc.Height = height;
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
sd.BufferDesc.RefreshRate.Numerator = 60; // ここで、60フレームを指定
sd.BufferDesc.RefreshRate.Denominator = 1;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; // バックバッファにレンダリング
sd.OutputWindow = g_hWnd;
sd.SampleDesc.Count = 1; // マルチサンプリング
sd.SampleDesc.Quality = 0; // マルチサンプリングを無効に
sd.Windowed = TRUE;
for( UINT driverTypeIndex = 0; driverTypeIndex < numDriverTypes; driverTypeIndex++ )
{
g_driverType = driverTypes[driverTypeIndex];
hr = D3D10CreateDeviceAndSwapChain( NULL, g_driverType, NULL, createDeviceFlags,
D3D10_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice );
if( SUCCEEDED( hr ) )
break;
}
フレームの確認は、SetTime( .. で設定して、WM_TIMER のメッセージがきたところを確認しています