我正在尝试使用D3DImage在DX11中获得MSAA,但似乎是不可能的,因为不允许共享多重采样纹理,如下所示:http://msdn.microsoft.com/en-us/library/windows/desktop/ff476531(v=vs.85).aspx
实际上,我使用D3DImage的SharpDX实现,对于DX11和DX10来说效果很好,只要一个人可以在不进行抗锯齿的情况下离开即可。
此线程中描述了解决该问题的方法:http://sharpdx.org/forum/5-api-usage/1000-d3d11-problem-with-usage-of-texture2d这是不成功的。还有另一个线程在问类似的问题:Multisampling and Direct3D10 / D3DImage interop
最后,问题实际上是,如果有人可以确认,是否绝对不可能使用D3DImage来渲染DX10 / DX11中的抗锯齿内容?
最佳答案
正如在Microsoft链接中所述(也尝试过几次),不允许进行多重采样的共享纹理(实际上,纹理还必须没有mip级别,作为附加信息)
共享纹理的唯一方法是创建一个非多重采样版本(相同的格式/参数),然后使用
DeviceContext.ResolveSubresource
在SharpDX中将msaa纹理转换为非多重采样纹理,然后可以共享该结果。