0

DCはWindowsで何に対応しますか?HWNDまたはHMONITORからHDCを入手できることは知っています。これは、ウィンドウのDCがモニターのDCのエイリアスまたはプロキシであることを意味しますか?Windowsでは、ウィンドウクラスに独自のDCが必要であると言うことができるため、同じDCではないように見えますが、WindowsAPIはDC間の親子関係もサポートしているようです。モニターのDCが親DCの1つであることがわかりますか?

ウィンドウが複数のモニターにまたがる場合はどうなりますか?Windows APIは、ウィンドウから単一のHDCを取得し、HDCから単一のHGLRCを取得することのみをサポートしているようです。OpenGLは、フルスクリーンウィンドウが複数のモニターにまたがることをサポートしていないため、これを実現するには複数のウィンドウが必要であることを読みました。

SLI / Crossfireシステムは単一のGLRCになりますか?

GLRCは、グラフィックシステムに最もよく似ているように思えます。GLRCは、単一のグラフィックシステムを表します。DCは出力を表します。GLRCは、グラフィックシステムに接続された出力に関連付けられている任意のDCと、それらのDCの任意の子DCに描画できます。また、複数のモニターと複数のグラフィックカードを使用して、それぞれをペアにして、各GLRCを各DCとペアにすることもできます。

訂正または確認しますか?

4

1 に答える 1

3

Windowsのデバイスコンテキストは、(理論的には)描画できるサーフェスであり、ディスプレイに表示される可能性があります。デスクトップウィンドウやモニターと同様に、ウィンドウにはデバイスコンテキストがあります。個々のウィンドウはデバイスコンテキストを共有できます。これは、単純なコントロールなどを表すサブウィンドウで発生する可能性があります。

デバイスコンテキストには、あなたが言うように親子関係はありません。全体は、ウィンドウのデバイスコンテキストのクリッピング長方形についてですCS_PARENTDC

ウィンドウには、ウィンドウがどこに移動するかに関係なく、単一のデバイスコンテキスト、期間(ウィンドウが使用されない場合よりも少し複雑ですがCS_OWNDC、OpenGLを処理する場合は常にそれを使用する必要があります)があります。「デバイスコンテキスト」という用語は、「モニター」または実際のハードウェアと混同しないでください。それはおそらくあなたが描くことができる表面です。

OpenGLの場合、デバイスコンテキストは、レンダリングコンテキストとの関連が比較的緩いだけです。RCが新しいDCと同じピクセル形式で作成されている限り、RCでデバイスコンテキストを使用することは合法です。したがって、DC1でピクセル形式を設定し、それを使用してRCを作成してから、DC2で同じピクセル形式を設定し、DC1またはDC2とそのRCでwglMakeCurrentを使用できます。

マルチモニターがOpenGLでどのように機能するかは、GPUのセットアップに完全に依存します。OpenGLがWindowsで動作することを可能にするICDメカニズムでは、単一のドライバーのみをインストールできます。したがって、システムに2つのカードがあり、それぞれが2つの異なるドライバーを備えた別々のモニターに接続されている場合、OpenGLはそのうちの1つのみを認識します。部分的に他のGPUの画面にあるDCに描画しようとすると、予測できない結果になります。

これで、1枚のカードが複数のモニターにフィードしている場合、OpenGLは気にしません。問題は、独立した目に見えるグラフィックプロセッサの数です。

そうは言っても、SLI / Crossfireの要点は、2つのGPUが実際には1つにすぎないというふりをすることです。そのため、ドライバーは1つで、OSは実際には1つのGPUしか認識せず、それらのカードの1つだけがモニターに出力されますしたがって、OpenGLは、1枚のカードが複数のモニターに給電する場合とまったく同じように機能します。

于 2012-09-29T01:39:25.930 に答える