【问题标题】:XNA Antialias question!XNA 抗锯齿问题!
【发布时间】:2009-11-23 16:54:06
【问题描述】:

我在使用 XNA 和抗锯齿方面遇到了问题。我可以使用

激活它
        graphics.PreferMultiSampling = true;
        graphics.ApplyChanges();

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

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

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

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

【问题讨论】:

  • 你在哪个函数中设置图形参数?你在调用 ApplyChanges() 之前都设置好了吗?
  • 我在游戏类的构造函数中调用的第一段代码和我在 LoadContent() 函数中调用的第二段代码,然后我第二次调用 graphics.ApplyChanges()

标签: xna antialiasing multisampling


【解决方案1】:

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

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

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

所以,我不知道您必须使用什么设置才能获得 16XAA;您可能需要尝试一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 2010-12-01
    相关资源
    最近更新 更多