3

我创建了一个简单的 DirectX 应用程序,它呈现一个顶点字段。顶点呈现如下(如果从顶部查看):

|\|\|\|\|
|\|\|\|\|

每个三角形呈现如下:

1
|\
2 3

这应该意味着多边形是逆时针的并且没有被渲染,但它是。无论如何,从顶部看飞机是完美的。

但是,当从另一个级别查看时,某些多边形是透明的,您可以看到它们背后的几何图形。我已经强调了一些发生这种情况的地方。

我认为这是一些基本的初学者问题。我错过了什么?我的光栅化描述是这样的:

new RasterizerStateDescription
                                {
                                    CullMode = CullMode.Front,
                                    IsAntialiasedLineEnabled = true,
                                    IsMultisampleEnabled = true,
                                    IsDepthClipEnabled = true,
                                    IsFrontCounterclockwise = false,
                                    IsScissorEnabled = true,
                                    DepthBias = 1,
                                    DepthBiasClamp = 1000.0f,
                                    FillMode = FillMode.Wireframe,
                                    SlopeScaledDepthBias = 1.0f
                                };

替代文字

4

2 回答 2

4

这是设计使然。FillMode.Wireframe仅将每个三角形的边缘绘制为线。就这样。

使用实心填充模式和深度写入和颜色蒙版(RenderTargetWriteMask在 D3D11 术语中)进行第一遍,然后使用深度测试(但深度注销)和线框模式进行第二遍。您可能也需要深度偏差,因为线和三角形的光栅化方式不同(并且它们的 z 在相同的片段位置可能不同)。

顺便说一句,这种技术被称为隐藏线去除。您可以查看此演示文稿以获取更多详细信息。

于 2011-01-19T11:14:00.487 回答
0

原来我只是没有设置深度模板缓冲区。那好吧。

于 2011-03-18T01:56:13.630 回答