好的,我正在重写这篇文章,因为我有一个非常具体的问题,但我认为解释我想要做什么可能更有用:)
我正在使用 SlimDX 在 WPF 中工作。目标是一个初始化 Direct3D 设备的程序,并且能够将酷炫的 D3D11 gfx 渲染到屏幕外渲染目标。
用户可以添加输出窗口,输出窗口可以在任何连接的监视器上全屏显示,也可以只是一个窗口。一个输出窗口只显示屏幕外后台缓冲区的一部分。所以 - 我有一个非常高分辨率的屏幕外纹理/后缓冲区,我想要零到 N 个输出窗口基本上渲染一个全屏四边形,其中 uv-coords 指定高分辨率纹理中的一个区域。
我的问题是:
在 SlimDX 中,在没有任何输出窗口/交换链的情况下,在主应用程序中初始化 Direct3D 设备的“正确”方法是什么?
一旦我有了一个“全局”的 Direct3D 11 设备,我该如何设置一个离屏渲染目标纹理,我可以在其中渲染很酷的东西?
一旦我有一个屏幕外渲染目标,其中渲染了很酷的东西,我该如何设置一个系统,以便我可以添加/删除显示该渲染目标部分的窗口?(对于每个动态创建/删除的窗口,添加/删除交换链的一部分?)
我知道这些问题非常具体,大多数人不想在后台渲染东西以显示在不同的设备上,但是嘿 - 这就是 stackoverflow 的用途:)