之前项目非常紧张,再加上自己常常偷懒,一直没有学习。最近项目完了,又懒散了好长一段时间。不能再这样下去了。
这段时间看了看 dx9 2D渲染相关的内容。废话不多说了,先做个大概的总结吧。以后有空了再来个一个详细的。
dx9 2d 渲染相关的文章不大好找,baidu 上几乎搜索不到什么资料,上google才能找到一些零碎的东西。一直想找本书系统地学习一下,但是都没有一本比较系统的书。一些比较系统地书籍都是针对老版本的dx8的,甚至许多都是在讲ddraw的。
下面这两个链接的资料没有仔细看,讲的是dx8 d3d 绘制 2d 的,如果 dx9 能画出来的话,应该有参考价值:
http://www.cnblogs.com/resound/archive/2010/08/12/1797738.htmlhttp://www.cnblogs.com/resound/archive/2010/08/11/1797645.html
不知道是不是从 focus on 2d in direct3d 里面的内容。
还有另外一个转了又转的博客,我找不到链接地址了,内容也不是原创,但是我是参考上面的内容成功显示出2d图片的。
dx9显示2d 基本有3种方法:
1. 利用 ID3DXSprite 接口。 这是dx 提供的 com 接口, 功能应该比较完善。我不喜欢这种做法, 因为许多技术细节被封装起来了。
2. fvf 里面使用 rhw . 我试了试,能显示出来。但是可能由于是自己不了解吧,至少我的感觉是矩阵变换不能使用了,感觉还是有许多东西自己看不到,我也不喜欢这种做法。
3. 设置正交的投影矩阵,然后像绘制 3d场景一样地,绘制 2d 资源。 我个人比较喜欢这种做法。支持各种矩阵变换,实现细节都要比上面两种方式接触的更多。
通过对 3d 矩阵变换的封装, 也能做出来一套从外面看来与顶点变换无关的2d 渲染代码。
之前豪情壮志地想自己实现一套AuroraGT, 但是发现有许多技术细节都不了解,实现起来难度相当不小。于是放弃了这个念头,就打算利用AuroraGT ,来做一个小的游戏demo.
最近两天完成了解析sprite 文件,导入 sprite 文件数据的功能, 并且结合了 d3d 绘制 2d 的代码,算是搭了个雏形。趁着这些天事情不多,尽量多抽时间做一做吧。
为了方便公司和在家不同地点写代码,用了google code, 用 subversion 进行版本控制,感觉很方便。
下面这个小 demo 的 google code 地址。代码写得很糙。尽量用自己的知识完善完善吧。
http://code.google.com/p/miaotestusingaurora/
dx9 方面还有许多知识上的欠缺,需要尽快学习,然后把这些功能整合到这个小demo 里面去。
比较大的有以下几块
1. dx 的 stencil
2. dx 实现 particile system.
3. shader HLSL
4. 对 dx alpha通道的机制还不完全了解,目前只能照葫芦画瓢。
参考资料方面,我觉得还是应该首先多读,读懂 dx9 龙书。
之前一些讲 dx8 渲染 2d 的书籍不原意看,主要是因为照着上面敲例子,没法看到结果。现在能够显示2d 图形了,可以参考参考。比如那本 focus on 2d in d3d.
将来水平高些了,再看看大名鼎鼎的 HGE 引擎是如何实现的吧。
目前 dx9 给我的感觉就是知识很零碎,学习起来抓不到重点的感觉。
另外,目前给这个 demo 写得代码,主要都是针对如何支持 AuroraGT 的。希望这些经验在下个项目能用得上。
先随便侃这么多,以后有机会,附上一些代码再仔细聊吧。