SwapChainBackgroundPanel在GPU拾取时不调用渲染事件-DirectX和XAML

SwapChainBackgroundPanel在GPU拾取时不调用渲染事件-DirectX和XAML,xaml,directx,windows-store-apps,winrt-xaml,directx-11,Xaml,Directx,Windows Store Apps,Winrt Xaml,Directx 11,我已经在这里问过这个问题了(),但是它只有少数的观点和零的答案/评论,所以我想我应该用我找到的更多信息来再次尝试一下 我基本上有一个我正在开发的Windows应用商店DirectX+XAML应用程序。我目前的问题是,当用户与应用程序交互时,我用于DirectX渲染的SwapChainBackgroundPanel的渲染事件(根据MSDN上的Windows 8示例)有时不会被调用 如果我正在使用相机做一些事情,例如根据触摸/鼠标位置改变它所看到的东西,它将继续更新,但如果我正在拾取,它将不会被调用

我已经在这里问过这个问题了(),但是它只有少数的观点和零的答案/评论,所以我想我应该用我找到的更多信息来再次尝试一下

我基本上有一个我正在开发的Windows应用商店DirectX+XAML应用程序。我目前的问题是,当用户与应用程序交互时,我用于DirectX渲染的SwapChainBackgroundPanel的渲染事件(根据MSDN上的Windows 8示例)有时不会被调用

如果我正在使用相机做一些事情,例如根据触摸/鼠标位置改变它所看到的东西,它将继续更新,但如果我正在拾取,它将不会被调用,我不知道为什么

我使用标准的GPU拾取方法(在该方法中,我为每个对象渲染具有唯一颜色的场景,然后获取按下区域的1x1纹理以查找选定对象),但当我使用此拾取技术选择多个对象(用户将手指/鼠标拖动到多个对象上)时,不会调用渲染。所以实际上,很多对象都被选中了,但是用户只有当他们移开手指/停止按下鼠标按钮时才会看到这一点

发生这种情况有什么原因吗?是因为GPU拾取方法吗?如果是这样的话,有没有办法绕过它而不是使用光线跟踪拾取方法(这会大大降低对大量对象的拾取速度)

还有其他人有这个问题吗?是否有来自Microsoft anywhere的解释,说明在发生这种情况时不会调用渲染是故意的


谢谢您的时间。

您多久渲染一次此纹理?我的猜测是,如果您为每次鼠标/指针移动渲染它,那么它可能会大大降低您的速度。你也许应该试着分析一下。如果这是个问题,也许你可以异步渲染它?我不是每个鼠标指针都做,我做了一个移动测试来降低速度,但是的,这可能是相当多的。但是,我想做的事还有其他方法吗?除了异步执行之外,我想-但这会加快速度吗?如何渲染1x1纹理?你要把整个场景再发送出去吗?另一种方法可能是直接访问backbuffer。您可以尝试通过
copyrource
LoadTextureFromTexture
将其内容复制到CPU可读的纹理。然后可以计算要从中读取像素值的坐标的数据位置。你应该异步考虑做这个检查。如果它是一个冗长的操作,那么如果在那里执行,它将阻塞UI线程。您可以尝试
BackgroundWorker
或新的
任务
api,这是您应该针对的。net4.5。