用事实说话-Silverlight5有搞头

 

测试页面,需要silverlight5 beta

https://crazylights.googlecode.com/svn/clge_publish/s5testTestPage.html

我最关注的部分,是silverlight5中的xna,我已经使用silverlight5实现了一个spritebatch

silverlight5 的xna,我先做了一个2D的测试。

image,嘛,性能自然是没有原生的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,而且带来了线程的麻烦却没有给出解决方案和工具,一付你们自己看着整的架势。

仍然是瑕不掩瑜。

posted @ 2011-05-13 17:29  疯光无线  阅读(1484)  评论(4编辑  收藏  举报