我有一個編譯爲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。但我不確定它是否會遇到與上述相同的問題。