我使用directx在visual c#中渲染网格物体。当打开消除锯齿时,我在网格上的边缘处得到了以下伪影(参见图像)。伪影仅在转向相机的边缘上显示,并且在我加载的每个网格上显示。我使用DirectX 9.0库,问题只出现在我的Windows 10桌面上。我还使用Windows XP桌面进行测试,并在那里正确显示网格。此外,多重采样的水平似乎不会影响问题(但当mutisampling设置为none时问题消失)
这是参数的初始化:
PresentParameters presentParameters = new PresentParameters();
presentParameters.BackBufferFormat = Format.Unknown;
presentParameters.Windowed = true;
presentParameters.SwapEffect = SwapEffect.Discard;
presentParameters.AutoDepthStencilFormat = DepthFormat.D24X8;
presentParameters.MultiSample = MultiSampleType.FourSamples;
presentParameters.EnableAutoDepthStencil = true;
我很感激任何建议。
这是带边的网格:
答案 0 :(得分:0)
最新的Windows(8和+)已经看到交换链和演示的重大变化。较新的direct-x API甚至不授权多重采样交换链。
你可能会或可能不会在这里做一些奇怪的事情,但如果没有更多细节,很难诊断出来。我建议您不要创建多重采样交换链,而是创建常规交换链,分别创建多重采样表面(颜色+深度)并将颜色解析为后备缓冲区。它应该可以解决你的问题。