我正在开发一个集成了WPF和DirectX的应用程序。我的目标是使用一个共享表面:
我认为我有1个,3个和4个想通了,但2个让我头痛。我的基本问题归结为:我认为WPF和Direct2D互操作的共享表面格式必须是B8G8R8A8_UNorm
,但我无法在该类型的纹理上为我的Compute Shader创建无序访问视图。 / p>
如何让Compute Shaders在这种情况下工作?我是否想念一些创造无人机的棘手方法?我是否需要重构我的应用以某种方式使用多个纹理?
答案 0 :(得分:0)
这是不可能的,因为这些DirectX功能和WPF互操作的有限格式支持(使用D3D9Image)。
在所有这些功能之间实现互操作的一种方法是在R8G8B8A8_UNorm
中执行几乎所有操作,然后在最后使用Direct2D将结果写入用于互操作的B8G8R8A8_UNorm
渲染目标WPF。 Direct2D可以将RGB结果写入BGR目标,因此非常简单。