我创建了一个简单的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
};
2 回答
这是设计的 .
FillMode.Wireframe
仅将每个三角形的边缘绘制为线条 . 就这样 .执行第一次通过实心填充模式和深度写入和颜色掩码(D3D11术语中的
RenderTargetWriteMask
),第二次执行深度测试(但深度写入)和线框模式打开 . 您可能也需要深度偏差,因为线和三角形不是以相同的方式光栅化(并且它们的z在相同的片段位置处可以不同) .顺便说一句,这种技术被称为隐藏线删除 . 您可以查看this presentation了解更多详情 .
原来我没有设置深度模板缓冲区 . 那好吧 .