XNA 4.0 搭配 Intel GMA 3150 显卡
我有一台配备 Intel GMA 3150 显卡的 Asus Eee PC,操作系统是 Windows 7 Starter,并且安装了 DirectX 11。
当我运行使用 XNA 4.0 的项目时,我在 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:
据我所知,我的显卡支持 XNA 框架的所有要求。那么有什么问题呢?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
英特尔 GMA 3100 和 3150 仅支持 XNA 中的 Reach 配置文件。
此外,您可能必须重构一些代码,因为在属性中设置配置文件后,您可能会遇到一些编译错误。
特别要注意的是:
您的硬件最多仅支持 Shader Model 2.0。如果您使用任何 3.0 着色器,则需要针对 VS_2_0 和 PS_2_0 编译它们
您无法使用某些纹理表面格式。
一次只能绘制一个渲染目标(因此这里没有花哨的延迟渲染)
这里有一个列表,用于比较对覆盖范围配置文件的支持限制。
(顺便说一句,你的硬件不能直接运行DirectX 11,它只能使用参考设备,并且运行速度会非常慢)
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)
您应该尝试将 XNA 配置文件从 HiDef 更改为 Reach
您可以通过右键单击项目 -> 找到该设置特性
You should try changing the XNA profile from HiDef to Reach
You will find that setting by rightclicking on the project -> properties