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

项目组现在要做一个三维的项目,我们几个童鞋,讨论了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://www.ntxz.net/?p=1989 | 周忞 | 吉心的记事本



该日志由 吉心 于2012年09月17日发表在 我的作品 分类下, 你可以发表评论
在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 体验 Silverlight 5 3D开发之环境搭配篇 | 周忞 | 吉心的记事本
关键字: , , ,

体验 Silverlight 5 3D开发之环境搭配篇:目前有1 条留言

  1. 0楼
    你好啊:

    这么好的文章没人顶?

    2012-12-17 07:54

发表评论

您必须 [ 登录 ] 才能发表留言!