在xaml项目中使用CoreWindow swapchain,为什么没有画出来?

时间:2013-01-10 22:57:25

标签: c# c++ xaml windows-8 directx

我目前正在开发一个Win8项目,该项目使用C#和XAML作为应用程序的前端,使用DirectX的C ++作为图形密集型部分。 因为它主要集中在实时图形和输入上,所以我决定使用为CoreWindow创建的SwapChain。

虽然我设法通过将渲染线程绑定到CompositionTarget来运行渲染线程,但屏幕仍然是黑色的。绘图代码工作正常,它使用ImageSurfaceSource,我最近切换到SwapChain。

即使初始化的任何部分都没有返回任何错误,你们中的任何一个都可以解释为什么它没有绘制任何东西吗?

1 个答案:

答案 0 :(得分:1)

完全相同的问题,我使用交换链我的整个屏幕变黑。 后端是c ++ Windows运行时组件,实际执行代码驻留在C#win 8项目中。

相同的代码开始在c ++项目中工作。


重新创建错误的步骤:

(我在这里使用了互操作代码:interop)来呈现给SwapChainBackgroundPanel)

  1. c ++ Windows运行时组件,接受交换链和礼物。

  2. 我将此组件添加到c ++空白商店应用程序,渲染效果很好。

  3. 将相同的组件项目添加到C#空白商店应用程序//然后创建swapChainPanel ..并传递它。这是我最终得到一个空白屏幕的地方。

  4. 解决方案:

    我设置了CompositionTarget.Rendering += OnRendering; // the render event

    导航时

    现在我注意到我从未真正导航过。

    所以渲染器永远不会被调用...在构造函数上添加事件解决了我的情况。