質問

書くときにはDirectX用途では、明らかにする支援、ユーザの停止の申請によ Alt-タブ この 高速無誤.何が最善の慣行を確保する。るものにも対処していく必要がありま

  1. 最良の方法での検出時に申請してalt-ウィンドウとしている場合に返されています。
  2. 何DirectX資源を失った場合、ユーザー alt-ブによるデモンストレーションに対応。
  3. 主要なものを避けるにはapアーキテクチャのための目的でのalt-tabです。
  4. 任意の差異について主要なDirectX版して適用します。

少し面白い仕組みとgotchasも良い。

役に立ちましたか?

解決

させていただいておりますお使いのC++の目的での私の回答がける状態であれば、すぐに使用スレッドセーフで、C#、XNA(http://creators.xna.com/ では優れたゲームプラットフォームを取り扱うすべてのこれらの課題です。

1]

この記事はwindowsの画面の手順を検出するためのウィンドウ失、きの取り扱いにメインウィンドウ http://www.functionx.com/win32/Lesson05.htm.また、チェックアウトのWM_ACTIVATEAPPメッセージ: http://msdn.microsoft.com/en-us/library/ms632614(VS.85).aspx

2]

3]

まずない無効Alt-タブがあります。いう最小限のCPU負荷をアプリケーションが設定されていないので、ユーザーしょうAlt-ブのいったい何でも完全に一時停止の申請又はフレームの描画されます。がある場合、アプリケーションはminimzed、もちろんなのを描画するのにん有難う御座います。後を考えるネットワークゲームで、私のベストの溶液だまだ低減のフレームの描画される毎秒とを目的としているのネットワークパケット取り扱いがも捨てたものが多く、パケットが来るまでのゲームは再起動します。

4]

正直に言うだけにこだわりDirectX9.0c(またはDirectX10したい場合に制限して対象システム営業をスタラビスタ新)可能であれば:)

最後に、DirectX sdkは、多数のチュートリアルとサンプル: http://www.microsoft.com/downloads/details.aspx?FamilyID=24a541d6-0486-4453-8641-1eee9e21b282&displaylang=en

他のヒント

私たちは、すべてのフルスクリーンDirectXのデバイスを使用しないことによってそれを解決した - 代わりに、我々はそれがタスクバーを非表示にするために、最上位のフラグでフルスクリーンウィンドウを使用していました。あなたはそれの外タブをALT場合は、フラグを削除し、ウィンドウを最小化することができます。テクスチャリソースは、ウィンドウによって生かされています。

しかし、このアプローチは、原因「ロック画面」はCtrl + Alt + Deleteを、リモートデスクトップ接続、ユーザーの切り替えまたは同様に起こって、デバイス紛失イベントを処理しません。しかし、これらは、(少なくとも、それが私たちのアプリケーションでそうであった)。

効率的に非常に速いかを処理する必要はありません。
これはさまざまな理由で起こることができるものであるとして、

すべての深刻なD3Dアプリケーションは、失われたデバイスを処理することができる必要があります。

DX10ではVistaでのアプリの失われたデバイスを引き起こすことになるリセットするためのグラフィックスデバイスのための私の経験では、それは一般的になり、新たな「タイムアウト検出と回復」機能があります。これは、ドライバーが成熟するにつれて向上しているようだが、あなたはとにかくそれを処理する必要があります。

DX8と9(10?)あなたは(主に頂点とインデックスバッファとテクスチャ)あなたのリソースを作成する場合には、彼らが失われたデバイス間で持続し、リロードは必要ありませんD3DPOOL_MANAGEDを使用。彼らは、システムメモリと、自動的にビデオメモリへのDXランタイムコピーに保存されているためです。しかしそこにコピーによるパフォーマンス・コストがあり、これは急速に頂点データを変更するにはお勧めできません。もちろん、スピードの問題があるかどうかを決定するために最初のプロファイルです: - )

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top