我正在尝试使用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的抗锯齿内容?
答案 0 :(得分:5)
如微软链接中所述(也尝试了几次),不允许多重采样共享纹理(实际纹理也必须没有mip级别,作为附加信息)
共享纹理的唯一方法是创建非多重采样版本(相同的格式/参数),然后使用
DeviceContext.ResolveSubresource
在SharpDX中将msaa纹理转换为非多重采样纹理,然后你可以分享它的结果。