2009-11-23 70 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;你可能需要稍微玩一下。