网格(一)

这里以绘制一个立方体网格为例。

创建一个立方体网格涵盖的主题包括:

     创建空网格对象;

     将立方体的面片数据写入网格缓存;

     指定网格中每个面片所属的子集;

     生成该网格的邻接信息;

     优化网格;

     绘制网格。

 

我们首先初始化下列全局变量:

     ID3DXMesh *Mesh = 0;

     const DWORD NumSubsets = 3;

     IDirect3DTexture9* Textures[3] = {0, 0, 0};

     std::ofstream OutFile;

 

这里我们对一个指针Mesh进行了初始化,该指针将指向以后创建的网格对象。我们还定义了该网格将具有的自己格式为3个。在本例中,每个子集都使用了一种不同的纹理。这样,纹理数组中的第i个索引就与网格中的第i个子集建立了关联。最后,ofstream类的对象OutFile用于将网格的相关数据写入一个文本文件中。我们可以将该对象作为参数传递给dump*函数。

 

本例程中的主要工作是在Setup函数中完成的。首先创建一个空网格。

接着,我们需要将描述该立方体的顶点和索引信息分别写入该网格对象的顶点缓存和索引缓存中。锁定顶点缓存和索引缓存,并手工写入这些数据就可很容易的实现这一目标。

网格的面片数据写入相应缓存后,我们必须指定每个面片所属的子集。这样我们就已经创建了一个含有合法数据的网格。至此,我们完全可以开始绘制该网格了。但是我们想先对其进行优化。注意,对于这样一个比较简单的立方体网格,对其进行优化基本上不会有什么收效。为了对网格进行优化,首先需要计算该网格的邻接信息。然后,我们对网格进行了优化。

至此,网格的设置已经全部完成。

最后,我们可用如下代码轻松实现网格的绘制。实质上,我们仅是通过循环遍历每个子集,为每个自己设置相关纹理并进行绘制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值