我有一个基于 C++ DirectX 的第三方游戏引擎编译成一个 Windows Phone 运行时组件 DLL。我正在努力将它集成到一个基于 Windows Phone Direct3D 和 XAML 应用程序的项目中。游戏引擎 DLL 使用应用程序的 Direct3DBackground::Draw() 方法提供的 D3D 设备、上下文和渲染视图纹理。
示例中的内置渲染器已消失,取而代之的是游戏引擎。
我可以渲染,但有持续的黑色闪烁。每隔一帧都是黑色的。为了向自己证明它不是渲染器(已被证明可以在其他地方工作),我将游戏引擎 DLL 中的所有渲染代码都剪掉了,只设置了一个清晰的颜色。结果还是一样。
起初我以为是因为示例生成的 Direct3DXamlAppComponent 可能运行在与游戏引擎 DLL 不同的线程中,但事实并非如此。他们在同一个线程上。
- 此配置可能导致什么渲染问题?
- 游戏引擎的渲染器是否需要单独的 d3d 设备?
- 游戏引擎的渲染器是否需要单独的 d3d 设备上下文?
我还没有尝试过的事情:
- 在 DLL 上创建第二个 d3d 设备
- 转换游戏引擎以提供自己的 IDrawingSurfaceManipulationHandler。但我不确定它是否会出现与上述相同的问题。