1

WindowsPhoneランタイムコンポーネントDLLにコンパイルされたC++DirectXベースのサードパーティゲームエンジンがあります。私はそれをXAMLアプリを備えたWindowsPhoneDirect3Dに基づくプロジェクトに統合することに取り組んでいます。ゲームエンジンDLLは、アプリケーションのDirect3DBackground :: Draw()メソッドによって提供されるD3Dデバイス、コンテキスト、およびレンダリングビューテクスチャを使用します。

サンプルの組み込みレンダラーはなくなり、ゲームエンジンに置き換えられました。

レンダリングはできますが、常に黒いちらつきがあります。1つおきのフレームは黒です。それがレンダラー(他の場所で機能することが証明されている)ではないことを自分自身に証明するために、ゲームエンジンDLLからすべてのレンダリングコードを切り取って、単純にクリアカラーを設定しました。結果は同じです。

最初は、サンプルによって生成されたDirect3DXamlAppComponentがゲームエンジンDLLとは異なるスレッドで実行されていたためだと思いましたが、そうではありません。それらは同じスレッド上にあります。

  • この構成が原因でどのようなレンダリングの問題が発生する可能性がありますか?
  • ゲームエンジンのレンダラーには別のd3dデバイスが必要ですか?
  • ゲームエンジンのレンダラーには、個別のd3dデバイスコンテキストが必要ですか?

私がまだ試したことのないこと:

  • DLL上に2番目のd3dデバイスを作成する
  • ゲームエンジンを変換して、独自のIDrawingSurfaceManipulationHandlerを提供します。しかし、それが上記と同じ問題を抱えているかどうかはわかりません。
4

1 に答える 1

1

問題はレンダー ターゲット ビューにありました。それへのポインターがフレームごとに更新されることに気づきませんでした。起動時にゲームエンジンレンダラーに一度設定しただけです。フレームごとにレンダー ビュー ターゲット ポインターを更新すると、黒いちらつきがなくなりました。

于 2012-11-16T20:00:12.253 に答える