Windows7は、ポイントフィルタリングを使用して、DirectX9バックバッファーからウィンドウクライアント領域に拡張しています。ウィンドウのサイズを変更すると、ストレッチによるアーティファクトは非常に見栄えが悪くなります。バックバッファサイズを変更することでこれを回避できますが、IDirect3DDevice9 :: Reset()を呼び出す必要があります。これにより、画面が真っ暗になり、サイズ変更が行われている間、わずかな遅延が発生します。
Windowsが使用するフィルタリング方法を改善する方法はありますか?または、レンダーターゲットなどの別のDirectXサーフェスからウィンドウを更新する方法はありますか?
管理されていないC++DirectXコードを使用しています。1280x720のバックバッファサーフェスがあるとします。
D3DPRESENT_PARAMETERS presentParams;
presentParams.BackBufferWidth = 1280;
presentParams.BackBufferHeight = 720;
gD3D->CreateDevice(
0, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&presentParams,
&pD3D9Device);
それでも私は1920x1080のウィンドウを持っています:
hWnd = CreateWindowExA(NULL, "WindowClass", winName,
flags, 0, 0, 1920, 1080,
NULL, NULL, hInstance, NULL);
Present()ウィンドウを呼び出すと、DirectXバックバッファーがウィンドウに拡張されます。ただし、それらのストレッチはフィルタリングを実行していないようです。
pD3D9Device->Present(NULL, NULL, NULL, NULL);
バックバッファのサイズを変更できますが、Reset()とReset( )を呼び出す必要があるため、ビデオメモリサーフェスが失われます。