1

モニターの 1 つをフルスクリーン モードに切り替えると、他のモニターが黒くなり、何も表示されないことがあります。私は何か間違ったことをしましたか、それとも単なるバグですか?

ウィンドウを作成し、そのウィンドウにバインドされたスワップチェーンを作成しました。そして、スワップチェーンの SetFullScreenState を最初のパラメーター true で呼び出し、2 番目のパラメーターでフルスクリーンに切り替えたいモニターの IDXGIOutput オブジェクトを呼び出しました。正常に動作することもありますが、他のすべてのモニターが失われることがあります (フルスクリーンのモニターのみが表示されます)。

私のグラフィック カードは Radeon HD6750 で、ドライバーのバージョンは 12.3 です。


MulitMon10 サンプルには同じ問題があることがわかりましたが、一部のゲームにはありません。または、スカイリムとテイルズ オブ モンキー アイランドは D3D または OpenGL を使用していますか?

4

1 に答える 1

0

この質問は 2 年前のものです。私はちょうどそれに出くわしました。DX11でも同様の問題があり、デバッグバージョンで時々発生し、リリースバージョンで体系的に発生しました。私のパラダイムでは、プライマリ モニターはコンソールとオプションの「ボタンを押す」GUI をホストします。セカンダリ モニター (使用可能なモニターの 1 つ) は、フルスクリーンのアプリケーション ウィンドウで、2D のプロフェッショナルな画像が表示され、1D および 3D ルックアップ テーブルを使用して GPU 変換されます。

プライマリ モニターがブランクになることはショー ストッパーでした。必要なすべてのダイアログは、コンソール ウィンドウの子です (したがって、プライマリ モニターで開きます)。セカンダリ モニターは映画用デジタル プロジェクターです。

したがって、私の解決策は、対象のウィンドウが既にフルスクリーン モードになっているときに、ウィンドウ モードでスワップチェーンを作成することでした。

私に理由を聞かないで。わたしにはできる。ここにもう少しあります:

まず、表示ウィンドウがモニターの表面全体を占めるように設定されています (境界線もすべてもありません)。

次に、このウィンドウのスワップチェーンを「windowed = true」で作成します。

実際には、フルスクリーンに見えてもウィンドウ化されています。境界線がなくても、2D 画像の表示/レンダリングに関する限り、同じように機能します。バックバッファに直接フィードすることも機能します。

その後、バックバッファを実際の管理用フルスクリーンに切り替えることができます。この手術は非常に目に負担がかかるため、どうしても必要な場合にのみ行うようにしています。結果として、Win7 はデスクトップ全体 (したがって、すべてのモニター、すべてのウィンドウ) をリセットし、複数の光のフラッシュを作成します。

バックバッファが作成された後に実際のフルスクリーンになると、デスクトップのリセットの途中で立ち往生するというデサグメントを経験したことはありません(元の質問に戻ります)。

完全に言うと、「ウィンドウフルスクリーン」と「リアルフルスクリーン」には違いがあります。使えそうなもの。

  • ウィンドウ化された全画面表示: 他のウィンドウ/ダイアログが 2D 作成にオーバーラップします。

  • 実際のフルスクリーン: 他のウィンドウ/ダイアログは下に表示されます (表示されませんが、そこにあります)。

必要に応じて 2 つのモードを切り替えると便利ですが、デスクトップをリセットするストレスが大きなペナルティとなります。

于 2014-03-31T18:42:54.663 に答える