XNA4的Content带来的无奈与限制就不提了,重要的是和3.1相比改变了不少,看了一下3.1的骨骼动画的例子,在4上面,才疏学浅的看不出个名堂。
Effect文件,我已经想办法FQ了,绕过了Content.
贴图由于SetData接口用的轻车熟路,本来产生了一种VeryEasy的错觉,今天具体看了一下接口,才发现除了SetData之外,没有任何可以利用的东西。
从SourceForge上找到了一个PNG处理的开源项目,在此鸣谢一下。
Windows上编译很顺利,注意不能直接使用,一定要建一个XNA Game Lib.
到WP7 项目一试,心都凉了,System.Drawing 引用了一大堆, Enum.GetValues 不支持 ASCII编码器不支持 连LIST.RemoveAll 也不支持,幸亏我有始终保持两个平台编译测试的习惯。好在System.Drawing 只是用了 Color 类型和 Image来缓存数据,从新实现了这两玩意儿。
总之是花了一晚上功夫,让Png.net在windows phone7 上能编译通过了。PNG的读取随后测试。
不禁一阵苦笑,继Pure C#的FreeType 之后,我又要弄一个Pure c#的FreeImage了么?这之后还有模型、骨骼动画、场景、soso…….
额,我专职去微软XNA部门上班算了。呵呵玩笑了,真能去就是不胜荣幸,现在先让我坚持完成六月中旬一个简单的3D引擎的小目标。
完全抛弃Content会带来很多的便利。我不要做任何资源修改还得经过编译时的玩意折腾一把。FreeImage也好,Fbx解析的轮子再造一遍也好。其他的基础工作也好,都是不可回避的。coding的工作和资源的工作要完全隔离开,这,才是专业。
简言之,我一个游戏程序的开发结束后,交给美术。美术只要用编辑器就可以继续游戏的资源修改和优化,无需再回到程序来编译,写资源管道这种无谓的东西,究竟是把XNA定位成个人开发的玩具呢,还是玩具呢,还是玩具呢?
在流程不变的情况下,策划也可以改几个配置文件,用编辑器摆弄摆弄来调试玩法,总是回到程序的手里,资源管道到底带来了什么便利性,我是相当的疑惑。既然微软你已经把XNA变成了window phone 7 上的唯一,你不能指望我们都用小工作室方式来开发吧。
在windows 环境下测试通过
令人遗憾的是alpha通道没有,这要阅读一下代码再说了
Texture2D FromStream(GraphicsDevice graphicsDevice, Stream stream);
这个也是应该好好测试一下的接口,说不定没有Effect的那个那么恶心。
测试结果。。。再见PngNet
Texture2D.FromStream 是可以直接读取正常的PNG GIF JPG,比Effect那个无谓的奇怪格式要正常了很多。
愚蠢了,没有仔细关注这个代码,浪费了几个钟头专程去绕路。。。。。。。