3

我遇到了 XNA 和抗锯齿的问题。我可以使用激活它

        graphics.PreferMultiSampling = true;
        graphics.ApplyChanges();

但是 - 它只有 2 倍抗锯齿。即使我设置

graphics.GraphicsDevice.PresentationParameters.MultiSampleType = MultiSampleType.SixteenSamples;

它仅保持 2 倍抗锯齿。如果我转到我的图形驱动程序设置(NVIDIA GeForce 9800 GT)并将应用程序决定的 Antialiastype 设置为 16x,那么我会得到漂亮而干净的抗锯齿。但如果它设置在“应用程序决定”上,我得到的不会超过 2 倍

有人知道为什么吗?谢谢!

4

1 回答 1

4

我会尝试按照MSDN上的这些说明进行操作。在XNA 论坛上的这个帖子中,Shawn Hargreaves 告诉另一个人(使用与您的代码类似的代码)这不是设置多重采样的方法。他表示应该在创建设备时在参数中指定。MSDN 文章显示了在适当的时间处理哪个事件来设置抗锯齿。 这个线程也基本上表明了同样的事情:你应该在事件处理程序中执行这种类型的设置。

另外,我相信 MSDN 示例会检查 4XAA 和 2XAA,因此您可能必须更改代码以支持 16XAA。不过,在调查这个问题时,我在我链接的第一个 XNA 线程中看到了这句话:

另外,我知道没有支持 16 个子样本进行多重采样的 GPU。例如,您在 Nvidia 的 8000 和 9000 系列上看到的模式名称“16x”实际上使用了 4 个样本,质量级别为“2”IIRC。这些 GPU 最多支持 8 个子样本,对应于“8xQ”和“16xQ”设置。

所以,我不知道您必须使用什么设置才能获得 16XAA;你可能不得不玩一下它。

于 2009-11-23T18:48:03.013 回答