2012-11-16 20 views
1

我有一個編譯爲Windows Phone運行時組件DLL的基於C++ DirectX的第三方遊戲引擎。我正在將它集成到基於Windows Phone Direct3D和XAML App的項目中。遊戲引擎DLL使用由應用程序的Direct3DBackground :: Draw()方法提供的D3D設備,上下文和渲染視圖紋理。WinPRT Xaml/DirectX示例中使用的外部DLL中的D3D設備呈現恆定的黑色閃爍

示例中的內置渲染器不見了,取而代之的是遊戲引擎。

我可以呈現,但有恆定的黑色閃爍。其他每一幀都是黑色的。爲了向我自己證明它不是渲染器(它已被證明可以在其他地方工作),我將遊戲引擎DLL中的所有渲染代碼剪掉,直接設置一個清晰的顏色。結果仍然是一樣的。

起初我以爲這是因爲示例生成的Direct3DXamlAppComponent可能運行在與遊戲引擎DLL不同的線程中,但事實並非如此。他們在同一個線程上。

  • 該配置會導致什麼渲染問題?
  • 遊戲引擎的渲染器是否需要單獨的d3d設備?
  • 遊戲引擎的渲染器是否需要單獨的d3d設備環境?

事情我還沒有嘗試尚未:

  • 在DLL
  • 創建第二D3D設備轉換遊戲引擎提供自己IDrawingSurfaceManipulationHandler。但我不確定它是否會遇到與上述相同的問題。

回答

1

問題來自渲染目標視圖。我沒有意識到每一幀都會更新指針。我剛剛在啓動時將它設置爲遊戲引擎渲染器。現在我每幀更新渲染視圖目標指針,現在黑色閃爍消失了。

相關問題