2011-10-30 67 views
0

我正在尋找與XNA框架一起開發一些簡單的2D遊戲。我特別希望能夠在我的上網本上隨時隨地開發和調試這些遊戲的部分內容。不幸的是,我的上網本的GPU不支持XNA所需的Shader Model 2.0。在低端圖形卡上運行XNA

沮喪,我去Google尋找替代品。我遇到了一個來自「Riemers XNA教程」的替代方案。下面的代碼應該強制XNA嚴格通過計算機的CPU運行,從而允許我的上網本運行非常慢的XNA版本。

if (GraphicsAdapter.DefaultAdapter.GetCapabilities(DeviceType.Hardware).MaxPixelShaderProfile < ShaderProfile.PS_2_0) 
      graphics.PreparingDeviceSettings += new EventHandler<PreparingDeviceSettingsEventArgs> (SetToReference); 
    } 

    void SetToReference(object sender, PreparingDeviceSettingsEventArgs eventargs) 
    { 
     eventargs.GraphicsDeviceInformation.CreationOptions = CreateOptions.SoftwareVertexProcessing; 
     eventargs.GraphicsDeviceInformation.DeviceType = DeviceType.Reference; 
     eventargs.GraphicsDeviceInformation.PresentationParameters.MultiSampleType = MultiSampleType.None; 
    } 

上面的代碼應該放在默認XNA項目的Game1方法中。

的問題是,當我嘗試運行這個新項目,我收到以下兩個錯誤:

Error 1 'XNAReferenceDevice.Game1.LoadGraphicsContent(bool)': no suitable method found to override c:\users\richard\documents\visual studio 2010\Projects\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs 39 33 WindowsGame1 

Error 2 'XNAReferenceDevice.Game1.UnloadGraphicsContent(bool)': no suitable method found to override c:\users\richard\documents\visual studio 2010\Projects\WindowsGame1\WindowsGame1\WindowsGame1\Game1.cs 46 33 WindowsGame1 

這兩個錯誤也導致藍「波浪」出現在LoadGraphicsContent和UnloadGraphicsContent方法之下線。

如果有人能幫我解決這個問題,或者指向另一個方向,那會很棒。

在此先感謝!

回答

1

新版本的XNA失去了與過去的一些兼容性。 可能您使用的是比Riemers教程更新的框架和XNA版本。

但是,考慮到新的XNA 4.0支持最小像素着色器2.0!這意味着你不能在只有像素着色器1.1或像素着色器速度太慢的低端機器上運行它。

先前版本XNA 3.1支持最小像素着色器1.1,您可以嘗試切換回使用visual studio 2008 express。

對不起,但既然XNA需要好機器,我認爲你應該找到更好的機器,也用於做2D圖形。

但是,編譯器錯誤與像素着色器無關,但可能與XNA和C#版本有關。

+0

http://blogs.msdn.com/b/shawnhar/archive/2010/03/12/reach-vs-hidef.aspx似乎是針對Windows Phone的像素着色器的一些特定規則。可能是一種用於糟糕的視頻適配器的方法。 – jgallant