用事实说话-Silverlight5有搞头
时间:2011-05-13 来源:疯光无线
测试页面,需要silverlight5 beta
https://crazylights.googlecode.com/svn/clge_publish/s5testTestPage.html
我最关注的部分,是silverlight5中的xna,我已经使用silverlight5实现了一个spritebatch
silverlight5 的xna,我先做了一个2D的测试。
,嘛,性能自然是没有原生的XNA4性能高,数据密集的操作是dotnet的死穴,罢了。
但用这玩意来做几个2D游戏自然是不在话下。
前景:
似乎很多场合都可以使用sl5来解决问题,那么只要投入够大,捧场够给力,sl5也可以形成庞大的应用软件生态。
我已经在考虑用sl5来搭建游戏开发工具和服务器管理工具。
复杂的耗时的运算,全部留着给服务器吧。
复杂如visual studio客户端都可以用silverlight来开发了,把编译器神马的,弄成服务器呗。
客户端需要的所有功能,silverlight都有了。
问题:
出于某种目的,当然我不是很了解,sl5中的xna4 和 之前随wp7 sdk发布的xna4有一些不同。
最大的差距莫过于没有 Effect和 数学库。
1.没有Effect再次回到了分别设置 VertexShader和PixelShader
2.没有数学库,好吧我自己写就是了
3.结合生硬,线程问题
4.RenderTarget不见了
5.贴图设置不便
问题比较严重的是XNA和silverlight的结合比较生硬,简简单单的绑了一个控件在那里。
而且,最而且,最严重的情况是,没有办法自己控制绘制,只能让控件重绘,然后在控件的XNADraw事件中处理绘制。
这只是前提,问题是这个XNADraw不在silverlight的UI线程中。
操作silverlight的控件和鼠标事件都在UI线程中,而呈现则在另一个线程,无疑增加了复杂度。
当然对于深谙多线程编程的我来说这不是什么问题,我只是提醒一下有志于加入silverlight5玩3d的兄弟们,线程这个环节上,比传统的客户端开发还要复杂一些。
问题2,RenderTarget不见了,也没有Texture2D的载入方法,只有SetData or CopyFrom(silverlight的 bitmapsource),都不是什么好招。
RT的替代方法倒是可以想象,但实在是不想提。
CopyFrom就是一个非常糟糕的贴图初始化方式,如果你实用,一定会需要设计一个异步控制机制,而且并不容易。问题还是线程。
虽然目前只是机械的整合了xna4,而且带来了线程的麻烦却没有给出解决方案和工具,一付你们自己看着整的架势。
仍然是瑕不掩瑜。