[SheRO]用D3D绘制2D图像

本文介绍了如何在Direct3D(D3D)中使用正交投影绘制2D图像,通过避免透视投影和利用ID3DXSprite的局限性,实现高性能的2D渲染。内容包括正交投影与透视投影的区别,以及通过D3DXMatrixOrthoOffCenterLH创建正交矩阵的方法,详细阐述了在2D渲染中如何控制顶点、深度缓存和矩阵变换。
摘要由CSDN通过智能技术生成

我在GameRes发布SheRO后,收到了几封热心朋友的来信,都希望我坚持把SheRO做下去,还意外的发现有一个志同道合者theshine以前也做过模拟RO的客户端,不过中途太监了。。他给我提供了很多有用的资料和意见,再次表示感谢:)

不管坚持不坚持做下去,现在首要任务是开源,所以有了关于SheRO的第一篇开发资料《用D3D绘制2D图像》。因为从图书馆借的资料快到期了,加之最近改正了一个2D渲染的性能问题,所以先从这个题目讲解了。


在D3D之前,绘制2D图像都用的是DirectDraw的API,可是现在微软的D3D根本没有DirectDraw了。那么如何在D3D里绘制2D图像呢?比较普遍的方法是使用D3D提供的ID3DXSprite,但是局限性太大,其一是它是微软封装好的类,我们不知道它的底层原理,其二是,它不提供自身顶点的操作,所以无法使用顶点着色器,纹理效果等。其三是,使用自己打造的ID3DXSprite,性能会更优。还有人可能会想,用BillBoard也可以绘制2D效果,的确是这样,但是BillBoard始终是3D世界的东西,我们需要的是直接在屏幕坐标绘制2D图像。

下面开始讲解它的具体实现:

从3D到2D,只是丢掉一个"D”

的确是这样,2D空间实际上是3D空间的一个子集,从3D到2D,我们需要的就是丢掉一个D。我们知道,在3D流水线中,有一步是透视投影变换,这就是从3D到2D的过程,如下图所示:

a

也就是从q点到q'的过程,透视投影变换可以产生近大远小的效果,那么显然,透视投

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值