2012-02-15 19 views
1

次のコードを使用して、ウィンドウの中央にフレームの内容を表示しています。ウインドウモードがあるときは大丈夫ですが、フルスクリーンモードを使用しているときは失敗します。フレームの内容は左上隅にあります。戻り値(hr)はS_OKです。IDirect3DDevice9 :: Presentは、フルスクリーンモードでフレームコンテンツを移動できません。

RECT src = {0, 0, viewport_width, viewport_height}; 
RECT dst = {0, (window_height - viewport_height)/2, viewport_width, viewport_height + (window_height - viewport_height)/2}; 

hr = pd3dDevice->Present(&src, &dst, 0, 0); 

理由はありますか?すべてのフレームバッファの内容をウィンドウ内の特定の位置にコピーする他の方法は知っていますか?

+0

どこにでも何かを描画するには、通常、テクスチャ付き四角形が必要です。ハードウェアが三角形を描画するのに極端に最適化されているので、これは標準的なものであり、実際には他のメソッド(sw-swap、blitなど)より高速です。 – ssube

答えて

0

デバイスがD3DSWAPEFFECT_COPYで作成されている場合にのみ、矩形を指定できます。

+0

デバイスは、ウィンドウとフルスクリーンの両方に対してD3DSWAPEFFECT_COPYを使用して作成されます。 – Felics

+0

破棄を使用する方が早いでしょう。途中でレンダリングするには、ビューポートを調整します。 – rasmus

+0

ビューポートが0,0であることを前提としたコードが多いため、ビューポートを調整できません。私はこのコードを変更することはできません:| – Felics

関連する問題