我想创建一个 XAML 应用程序,它会在屏幕的一部分中逐步显示一些图形。我可以有大量的元素,所以我想保留已经绘制的元素,只在它们出现时绘制新的元素。但不幸的是,我无法从 SurfaceImageSource 进入交换链(告诉我是否可能),所以我不能只在每次绘制调用时复制缓冲区。
如何在 SurfaceImageSource 上绘制新元素,同时以高性能方式保留旧元素?
我想创建一个 XAML 应用程序,它会在屏幕的一部分中逐步显示一些图形。我可以有大量的元素,所以我想保留已经绘制的元素,只在它们出现时绘制新的元素。但不幸的是,我无法从 SurfaceImageSource 进入交换链(告诉我是否可能),所以我不能只在每次绘制调用时复制缓冲区。
如何在 SurfaceImageSource 上绘制新元素,同时以高性能方式保留旧元素?
我认为交换链是您可以在屏幕上使用的东西,而不是像 SurfaceImageSource 那样使用的表面,所以我认为它根本没有交换链——它只是一个单一的纹理。我没有尝试过,但我假设如果您在渲染调用之间不清除它(使用 ClearRenderTargetView 方法) - 内容应该保持原样。如果您只想重用部分内容 - 您可能应该创建一个单独的纹理和一个渲染目标视图,用于渲染到该纹理,然后以某种方式将该纹理的内容复制到 SurfaceImageSource。我不确定最好的方法是什么 - 也许内存映射纹理并在它们之间进行 memcpy 或将一个作为纹理四边形(两个三角形)渲染到另一个。