我需要知道当前的淘汰模式。我想让D3D11_RASTERIZER_DESC由某些函数填充。可能吗?怎么样?或者我只能设置状态但不能设置状态?

我没有设置,但是我想知道默认设置。

最佳答案

除非先设置ID3D11DeviceContext::RSGetState,否则您无法通过D3DCULL_CCW获得剔除模式,否则将获得空指针。(我在代码中对此进行了测试)

让我们再深入一点

在DirectX 9中,默认剔除模式为D3D10_RASTERIZER_DESC,当我们说剔除时,我们总是指背面剔除,那么背面是什么?正面是按顺时针顺序定义顶点的面。不是正面的任何面就是背面。 Direct3D并不总是渲染背面。因此,据说背面被剔除。

在DirectX 10中,正面是正面还是背面取决于您,在D3D11_RASTERIZER_DESC中有一个名为FrontCounterClockwise的文件,默认值为FALSE,并且剔除剔除模式为D3D10_CULL_BACK,与DirectX 9相同。

在DirectX 11中,this page具有与DirectX 10中相同的成员,但是不幸的是,文档未指定剔除模式的默认值。

我想DirectX 11默认也会使用D3D11_CULL_BACK。当您按顺时针方向定义一个三角形并进行渲染时,一切正常,但是当您将其更改为反向闭合时,您将看不到任何东西。

编辑:
请参见的备注部分,它提供了默认值。感谢MooseBoys指出这一点。

10-05 18:15