我知道我可以通过设置示例4上的样本计数来应用多次采样,并设置光栅化器阶段在其上应用多次采样。这很有效,但现在我只想将多重采样应用于我正在进行的绘图调用的一个子集。我该怎么做呢?
在psuedo代码中,这是我想要实现的:
> build vertices data for a simple triangle
> map and copy vertices data to device
> send draw call to device which does NOT apply anti aliasing
> build vertices data for a simple rectangle
> map and copy vertices data to device
> send draw call to device which applies multisampling/antialiasing提前感谢您的帮助!
发布于 2017-11-26 03:56:10
在Direct3D 11中有一种称为D3D11_RASTERIZER_DESC.MultisampleEnable的光栅化器状态。然而,值得注意的是,这仅在Direct3D功能级别9.x和10.0上禁用多采样渲染。在Direct3D Feature Level 10.1或更高版本的硬件上,它不会做任何事情来改变点或三角形的渲染方式,以渲染采样计数大于1的目标。相反,它会设置与AntialiasedLineEnable相结合的线条算法,您可以在MSDN上了解到这一点。
换句话说,如果你要渲染到MSAA表面,在大多数情况下,它将是多采样的。问题是:你真正想要实现的是什么?
发布于 2017-12-21 17:45:00
正如Chuck Walbourn解释的那样,不可能将单采样和多采样渲染混合到同一渲染目标。但是,可以将多采样内容渲染为纹理,并将其解析为单采样内容。可以将该纹理渲染到单采样渲染目标上。
将多采样资源解析为单采样资源的方法是ID3D11DeviceContext::ResolveSubresource()。
https://stackoverflow.com/questions/47480124
复制相似问题