体验 Silverlight 5 3D开发之环境搭配篇

来源:互联网 发布:mac没装驱动会怎么样 编辑:程序博客网 时间:2024/05/02 01:07

体验 Silverlight 5 3D开发之环境搭配篇

时间:2012-10-08 20:14来源:博客园作者:吉心 点击:180次

项目组现在要做一个三维的项目,我们几个童鞋,讨论了N久,最后决定基于Silverlight 5做3D开发。说到开发,先得搭配环境,Silverlight 5微软自家的产品,环境的搭配应该比较容易,但,事实出乎了我们的意料。 昨天爬完几个网站的数据后,我也开始了环境的搭配,虽然出现了N个错误,总体来说,在前人摸索的基础上,相对还算
  

  项目组现在要做一个三维的项目,我们几个童鞋,讨论了N久,最后决定基于Silverlight 5做3D开发。说到开发,先得搭配环境,Silverlight 5微软自家的产品,环境的搭配应该比较容易,但,事实出乎了我们的意料。

  昨天爬完几个网站的数据后,我也开始了环境的搭配,虽然出现了N个错误,总体来说,在前人摸索的基础上,相对还算比较容易。

  一、必备条件:

  1、Visual Studio 2010,这个还是要装的,不然都没IDE环境,开发什么呢?

  2、Visual Studio 2010 SP1补丁,必须打,不打Silverlight 5不让你装的。

  3、Silverlight 5 Tools,微软网站有得下载,google一下 就出来了。

  4、Silverlight Toolkit (December 2011) for Silverlight 5。

  二、初步折腾记

  装完了上面的那个4个必需品,你可能就觉得可以用了,但事实会让你哭笑不得,新建项目,压根就没有Silverlight的模板……

  

  囧……这到底是怎么回事呢?继续问万能的google,总算找到了下面的方法:

  1、进入Silverlight安装目录(默认路径为:C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight),然后找到英文语言目录1033,在这个目录下有Silverlight Unit Test Project.zip、Silverlight3dApp.zip、Silverlight3dLib.zip三个项目模板文件。你比如说,我的是64位系统,那上面那个目录就是C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight\1033。

  

  2、进入VS安装目录中SL的模板路径(默认路径为:C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight\2052),粘贴上面复制的Silverlight Unit Test Project.zip、Silverlight3dApp.zip、Silverlight3dLib.zip三个项目模板文件。我的VS装在D盘,则路径为:D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight\2052。

  

  3、通过CMD命令行(vista及以上系统,记得要“以管理员身份运行”),进入VS安装目录(默认路径为:cd C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE),我的路径为:D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE。

  4、执行devenv /setup 命令。

  5、执行devenv /installvstemplates 命令。

  

  执行完上面的步骤后,重新打开VS 2010,新建SL项目,你会发现出现了上图中的3个3D相关的选项。

  三、再次折腾记

  但折腾还没有结束,新建项目后,直接报错“创建子项目 Silverlight3dAppContent 时遇到问题。无法找到指定的模板。请检查完整路径是否正确。

  

  几度崩溃,但我还得待她如初恋……这是什么问题……赶紧google,又发现了问题,缺少XNA Game Studio 4.0,真是伤不起啊,赶紧google下载地址,装上。(微软下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=23714)

  

  四、深入折腾记

  经过上面的折腾,能新建SL 的3D项目了,按了下F5,结果又来错误了,Error 1 Compile error -2147024770

  (0, 0): error : Unknown compile error (check flags against DX version) (myfile.slfx)。

  

  我那个昏迷啊!继续google,发现是缺少DirectX的相关运行库(XP可能没有这个问题,Win 7估计会遇到),google,google,救命的大神,她告诉我,需要去 http://www.microsoft.com/download/en/details.aspx?id=8109 上给下一个叫”directx_Jun2010_redist.exe“的安装包,解压,安装下。好吧,照做!编译的错误总算解决了。

  本以为能正确出来结果了,但胜利似乎还在彼岸!

  

  继续google大神,又来解决方法了。

  1、在Silverlight项目属性中,选中“允许在浏览器外运行应用程序“和”在浏览器内运行时需要提升的信任“,这时项目的Properties目录下将产生对应的OutOfBrowserSettings.xml和InBrowserSettings.xml两个文件,而后续步骤的设置将改变这两个文件的内容。

  2、点击“浏览器外设置”,勾选“使用GPU加速”与“在浏览器之外运行时需要提升的信任” ,以保证使用GPU加速,如果此两项不选,则会出现RenderModeReason.GPUAccelerationDisabled的情况。

  

  3、现在我们需要将第一步生成的OutOfBrowserSettings.xml和InBrowserSettings.xml两个文件加入到生成的XAP文件内容中,具体做法是在项目中分别选择两个文件,在其属性中的“生成操作”选择为“内容”。

  

  4、最后由于Silverlight 5正式版考虑到客户端环境的差异(包括有无显卡、显卡是否支持3D加速等多种情况),加入了对浏览器内3D内容的显示权限管理,因此,我们需要根据客户端实际情况提示使用者打开对本网站的3D显示权限。代码如下(注:最好是添加在3D展现的InitializeComponent();后面):

if (GraphicsDeviceManager.Current.RenderMode != RenderMode.Hardware)
{ string message;

switch (GraphicsDeviceManager.Current.RenderModeReason)
{ case RenderModeReason.GPUAccelerationDisabled:
message = "显示异常描述:3D加速被禁用!\n\n解决方法:请联系站长启用本页面的显卡3D加速参数。";

break; case RenderModeReason.SecurityBlocked:
message = "显示异常描述:Silverlight默认安全选项阻止了该站点的3D显示!\n\n解决方法:"
+ "\n1.在本页面点击鼠标右键;"
+ "\n2.选择“Silverlight”;"

+ "\n3.在弹出的“Microsoft Silverlight 配置”对话框中选择“权限”选项卡;"
+ "\n4.找到本站点域名后允许3D安全策略;"
+ "\n5.点击“确认”按钮;"
+ "\n6.刷新本页面"; break;

case RenderModeReason.Not3DCapable:
message = "显示异常描述:没有找到3D显卡!\n\n解决方法:请更换显卡或安装合适的驱动程序。";break; case RenderModeReason.TemporarilyUnavailable:
message = "显示异常描述:您的显卡暂时无法使用!\n\n解决方法:请重启浏览器后刷新本页面。";break; default:
message = "显示异常描述:未知错误!"; break;
} MessageBox.Show(message, "3D显示异常", MessageBoxButton.OK);
}}

  5、现在将Silverlight3dWeb设置为启动项目,将Silverlight3dAppTestPage.html设置为起始页。现在我们再次按下F5进行调试时,将出现旋转的3D立方体(如下图所示)。

  

  总结:

  装到最后,我是很无语了,太麻烦了!不过还好,最终是成功搭建出了环境。下一步得研究怎么就XNA写代码了,继续苦逼……

  还是无心搞科研啊!烦躁!

  本文来自吉心的博客,原文地址:http://blog.jixin.ntxz.net/?p=1989