1

我有一个基于 C++ DirectX 的第三方游戏引擎编译成一个 Windows Phone 运行时组件 DLL。我正在努力将它集成到一个基于 Windows Phone Direct3D 和 XAML 应用程序的项目中。游戏引擎 DLL 使用应用程序的 Direct3DBackground::Draw() 方法提供的 D3D 设备、上下文和渲染视图纹理。

示例中的内置渲染器已消失,取而代之的是游戏引擎。

我可以渲染,但有持续的黑色闪烁。每隔一帧都是黑色的。为了向自己证明它不是渲染器(已被证明可以在其他地方工作),我将游戏引擎 DLL 中的所有渲染代码都剪掉了,只设置了一个清晰的颜色。结果还是一样。

起初我以为是因为示例生成的 Direct3DXamlAppComponent 可能运行在与游戏引擎 DLL 不同的线程中,但事实并非如此。他们在同一个线程上。

  • 此配置可能导致什么渲染问题?
  • 游戏引擎的渲染器是否需要单独的 d3d 设备?
  • 游戏引擎的渲染器是否需要单独的 d3d 设备上下文?

我还没有尝试过的事情:

  • 在 DLL 上创建第二个 d3d 设备
  • 转换游戏引擎以提供自己的 IDrawingSurfaceManipulationHandler。但我不确定它是否会出现与上述相同的问题。
4

1 回答 1

1

问题来自渲染目标视图。我没有意识到指向它的指针每帧都会更新。我刚刚在启动时将其设置为游戏引擎渲染器。现在我每帧更新渲染视图目标指针,现在黑色闪烁消失了。

于 2012-11-16T20:00:12.253 回答