我尝试使用C ++在DirectX11中绘制100x100网格,但会出现以下问题:
上图显示了我在线框中绘制的网格,使用光栅化器,其fillmode设置为' D3D11_FILL_WIREFRAME'和一个' D3D11_PRIMITIVE_TOPOLOGY_LINELIST'拓扑结构。线框的线条看起来是交错的而不是笔直的,线框的某些部分缺失。
由于我不确定这个问题是什么,我不完全确定我应该寻找什么,因此,任何帮助都表示赞赏。
答案 0 :(得分:3)
这是别名的经典问题'
使用Direct3D 11,您可以使用MSAA(一般是抗锯齿选项),或者如果您不使用MSAA,则使用特定的线路算法。请参阅D3D11_RASTERIZER_DESC AntialiasedLineEnable
和MultisampleEnable
。
请参阅Aliasing和Multisample anti-aliasing
更新:我已将MSAA和AA模式添加到DirectX工具包tutorial。
答案 1 :(得分:0)
我偶然发现了解决方案,并没有达到我的预期。由于我创建的窗口有大纲栏,因此Windows客户端区域被误传。因此,当我创建我的图形设备时,我使用Windows大小而不是Windows客户端大小初始化它。不知何故,这导致了上述问题。
我通过实施' GetClientSize'来解决这个问题。窗口的方法,使用' GetWindowRect'。