2
votes

I have an Asus Eee PC with an Intel GMA 3150 graphic card, the os is Windows 7 Starter, and DirectX 11 is intalled.

When I run my project, which uses XNA 4.0, I get the following exception at the graphics.ApplyChanges():

Microsoft.Xna.Framework.Graphics.NoSuitableGraphicsDeviceException was unhandled
  Message=Could not find a Direct3D device that supports the XNA Framework HiDef profile.

Verify that a suitable graphics device is installed.

Make sure the desktop is not locked, and that no other application is running in full screen mode.

Avoid running under Remote Desktop or as a Windows service.

Check the display properties to make sure hardware acceleration is set to Full.
  Source=Microsoft.Xna.Framework.Game
  StackTrace:
       at Microsoft.Xna.Framework.GraphicsDeviceManager.FindBestPlatformDevice(Boolean anySuitableDevice)
       at Microsoft.Xna.Framework.GraphicsDeviceManager.FindBestDevice(Boolean anySuitableDevice)
       at Microsoft.Xna.Framework.GraphicsDeviceManager.ChangeDevice(Boolean forceCreate)
       at Microsoft.Xna.Framework.GraphicsDeviceManager.ApplyChanges()
       at XY.Game..ctor(IntPtr drawSurface, Int32 Width, Int32 Height) in XY.cs:line 55
       at XY.Program.Main(String[] args) in XY\Program.cs:line 11
  InnerException:

As far as I know, my graphic card supports all requirements of the XNA Framework. Then what is wrong?

2

2 Answers

5
votes

Intel GMA 3100 and 3150 support only the Reach profile in XNA.

Additionally you would have to probably refactor some of your code because after setting the profile to reach in Properties, you may get some compiling errors.

Things to especially note:

  • Your hardware only supports up to Shader Model 2.0. If you're using any 3.0 shaders, they need to be compiled for VS_2_0 and PS_2_0

  • You can't use certain texture surface formats.

  • Only one render target may be drawn to at a time (so no fancy deferred rendering here)

Here's a list to compare what is limited in support for Reach profile.

(By the way, your hardware can't run DirectX 11 directly, it can only use a reference device for it and will run very slowly)

2
votes

You should try changing the XNA profile from HiDef to Reach You will find that setting by rightclicking on the project -> properties