2

私は現在、厄介な小さな問題で立ち往生しています。DXGI モードの desc をゼロにするアプリケーションを開発しました。構造体と FindClosestMatchingMode() を呼び出して、宣伝されているように、「デスクトップ解像度に引き寄せられます」。

ラップトップが独自のディスプレイで完全に実行されている場合、これは正常に機能します。別のモニターを接続するとすぐに、暴走します。デスクトップを拡張した場合でも、ラップトップ モニターの解像度は正しく取得されますが、接続されているもの (1080p を実行) では 800*480 が優先されます :) (確かに、貧乏人の 16:10 ですが...)

クローン化/結合されたモニターで同じことを行うと (結果として 1 つの出力デバイスになります)、それらの解像度が同じであっても、同じ 800*480 がらくたになります。

何を与える?また、DXGI を介してディスプレイの現在のモードを適切に取得する方法や、この問題に対するまったく異なるが機能的なアプローチへのポインターを見つけた人はいますか?

D3D9 時代は生活が楽だった =)

- アップデート

外部モニターに属する IDXGIOutput インスタンスで行われた FindClosestMatchingMode() 呼び出しは、ネイティブの解像度が同じであっても、内部ディスプレイとは異なる動作をする (ほとんどの場合は明らかに間違っている) ことが判明しました。それに加えて、他のシステムにはこの問題はありませんが、ドライバーを含めてこの特定のラップトップをサポートすることはできません.

古き良き設定ダイアログの時間です。

4

1 に答える 1

0

最良の解決策ではありませんが、これらの正確なマシンに制約されていたので、GetSystemMetrics() (SM_CXSCREEN/SM_CYSCREEN) を介してモニターの現在の解像度を取得することにしました。 FindClosestMatchingMode() に供給される ModeToMatch 構造体。

次に、正しい (デスクトップ) 解像度に落ち着きます。

もちろん、より良い答えは大歓迎です;)

于 2013-04-22T20:25:42.607 に答える