DirectX11非实心线框

时间:2015-11-08 19:45:29

标签: c++ directx

我尝试使用C ++在DirectX11中绘制100x100网格,但会出现以下问题:

Wireframe lines not solid

上图显示了我在线框中绘制的网格,使用光栅化器,其fillmode设置为' D3D11_FILL_WIREFRAME'和一个' D3D11_PRIMITIVE_TOPOLOGY_LINELIST'拓扑结构。线框的线条看起来是交错的而不是笔直的,线框的某些部分缺失。

由于我不确定这个问题是什么,我不完全确定我应该寻找什么,因此,任何帮助都表示赞赏。

2 个答案:

答案 0 :(得分:3)

这是别名的经典问题'

使用Direct3D 11,您可以使用MSAA(一般是抗锯齿选项),或者如果您不使用MSAA,则使用特定的线路算法。请参阅D3D11_RASTERIZER_DESC AntialiasedLineEnableMultisampleEnable

请参阅AliasingMultisample anti-aliasing

更新:我已将MSAA和AA模式添加到DirectX工具包tutorial

答案 1 :(得分:0)

我偶然发现了解决方案,并没有达到我的预期。由于我创建的窗口有大纲栏,因此Windows客户端区域被误传。因此,当我创建我的图形设备时,我使用Windows大小而不是Windows客户端大小初始化它。不知何故,这导致了上述问题。

我通过实施' GetClientSize'来解决这个问题。窗口的方法,使用' GetWindowRect'。