首页 文章

DirectX:“透视”多边形

提问于
浏览
2

我创建了一个简单的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
                                };

alt text

2 回答

  • 3

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

    执行第一次通过实心填充模式和深度写入和颜色掩码(D3D11术语中的 RenderTargetWriteMask ),第二次执行深度测试(但深度写入)和线框模式打开 . 您可能也需要深度偏差,因为线和三角形不是以相同的方式光栅化(并且它们的z在相同的片段位置处可以不同) .

    顺便说一句,这种技术被称为隐藏线删除 . 您可以查看this presentation了解更多详情 .

  • 0

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

相关问题