【D3D11游戏编程】学习笔记十一:基本几何体绘制

本文介绍了D3D11中基本几何体的绘制方法,包括网格、圆柱、球和立方体的生成算法,以及如何使用共享顶点索引缓冲区绘制多个物体。此外,还讲述了如何通过鼠标操作旋转场景和伸缩镜头。
摘要由CSDN通过智能技术生成

       (注:【D3D11游戏编程】学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~)

       这次我们来学习几种常见的基本几何体的绘制方法,包含网格、球、圆柱等。很多复杂的几何图形都是由众多这些基本几何体组成的。而且,在水面渲染、地形渲染当中,都要使用到网格,因此掌握网格的基本生成方法很有必要。此外,有了这么多种几何体的绘制方法,我们在后面的程序中(学习导入3D模型之前)就可以绘制各种有趣图形了,而不是每次都是单调、乏味的立方体。。。

       1. 程序框架新增内容

       首先说下继上次实现的基本程序框架后,这次新增的内容。

       当然,最大的更新显示是常见的几何体的绘制,包括立方体、网格、圆柱、球,实现了这些绘制算法,每次通过简单的一句调用,即可生成各种大小、不同的几何体了。

       其次是鼠标的操作,为了对我们绘制的场景有更加直观的观察,我们从现在开始加入了鼠标的操作,通过鼠标可以方便地旋转场景、伸缩镜头来从各个角度、各个距离来观察绘制的场景。尽管这些功能依然很有限,但相比之前只能从一个角度观察场景,已经舒服多了。在后面我们会学习自己来实现一个第一人称的照相机,到时即可随意地在场景里面走动、观察了。

 

       2. 基本几何体绘制方法

       下面进入本文的重点,即这些几何体的绘制算法。

       2.1 网格

       网格应该是这些几何体当中最重要的一个了,其应用范围很广,包括水面、地形等。一般来讲,在生成一个网格之前,我们要指定该网格的宽和高(width、height),以及在宽、高上划分的格子数(m、n)。默认情况,也是绝大多数情况下,该网格位于x、z平面上,坐标系原点位于网格正中心。如下图所示:

图中宽为w,高为d。相应格子数为m、n。这样,每行顶点数为m+1,每列顶点数为n+1。格子宽、高分别为dx=width/m,dz=height/n。左上角顶点处坐标为(-0.5*width,0.5*height)。有了这些参数,整个网格上的顶点坐标就很容易生成了。我们可以通过一个二维的循环来实现,从左上角开始,向右、向下进行。

//每行顶点数、每列顶点数
UINT nVertsRow = m + 1;
UINT nVertsCol = n + 1;
//起始x、z坐标
float oX = -width * 0.5f;
float oZ = height * 0.5f;
//每一格纹理坐标变化
float dx = width / m;
float dz = height /n;
for(UINT i=0; i<nVertsCol;
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值