2009-11-23 59 views
3

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

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

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

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

它只保留2倍抗锯齿。如果我转到我的显卡驱动程序设置(NVIDIA GeForce 9800 GT),并从应用程序中设置Antialiastype为16x,那么我会得到很好且干净的抗锯齿。但如果它设置为'应用程序决定'我不会超过2倍

任何人都知道为什么? 谢谢!

+0

你在哪个函数中设置图形参数?你是否在调用ApplyChanges()之前设置它们? – Venesectrix 2009-11-23 17:41:07

+0

我在Game Class的构造函数中调用的第一部分代码,以及在LoadContent()函数中调用的第二部分代码,之后我第二次调用graphics.ApplyChanges() – Mat 2009-11-23 17:47:30

回答

4

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

此外,我相信MSDN示例检查4XAA和2XAA,因此您可能必须更改代码以支持16XAA。虽然看着这个虽然,我看到在我链接的第一个XNA线程中的这个报价:

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

所以,我不知道你将不得不使用什么设置来获得16XAA;你可能需要稍微玩一下。