我希望使用XNA框架来开发一些简单的2D游戏。我特别希望能够在使用我的上网本的同时开发和调试这些游戏的部分内容。不幸的是,我的上网本的GPU不支持XNA所需的Shader Model 2.0。
感到沮丧,我去谷歌寻找替代品。我从“Riemers XNA Tutorial”中找到了另一种选择。以下代码应该强制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方法下面出现蓝色“波浪”线。
如果有人能帮助我解决这个问题或指向不同的方向,那就太好了。
提前致谢!
答案 0 :(得分:1)
XNA的新版本与过去失去了一些兼容性。 可能你使用的是比Riemers教程更新版本的框架和XNA。
但是,请考虑新的XNA 4.0支持最小像素着色器2.0!这意味着你不能在只有像素着色器1.1或像素着色器2.0太慢的低端机器上运行它。
以前的版本,XNA 3.1,支持最小像素着色器1.1,您可以尝试使用visual studio 2008 express切换回它。
很抱歉,但由于XNA需要好的机器,我认为你应该找到更好的机器,也可以用于2D图形。
然而,编译器错误与像素着色器无关,但可能与XNA和C#版本有关。