D3D9 Samples(6)--Meshes

本文介绍DirectX 9中的Meshes示例,包括加载复杂模型文件(如X文件),并演示如何管理和渲染这些模型。文章详细讲解了初始化阶段的X文件加载及纹理处理过程,以及渲染阶段如何针对不同材质进行绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

D3D9 Sample(6)—Meshes

 

 

        打开Tutorial 6: Meshes项目,编译后运行,界面如下:

 

 

        这个例子主要演示网格模型(Mesh),一个三角形可以手写,但是模型通常都很庞大,有几百、几千甚至几万个点,就需要更简便、有效的管理方式。这个例子主要展示x文件的使用。

 

 

 

1. 初始化

 

          初始化主要是加载X文件和纹理文件。在InitGeometry函数中完成。

 

1.1 用D3DX函数加载网格

 

D3DXLoadMeshFromX

加载Tiger.x文件。加载的同时,我们返回了材质数g_dwNumMaterials和材质指针。

 

 

1.2 枚举材质,加载纹理

 

根据上面得到的材质数和材质指针,我们可以遍历.x文件中定义的各种材质。每种材质除了上个sample: Lights所说的各种颜色外,还会定义一张贴图。

D3DXCreateTextureFromFileA

通过这个D3DX函数加载材质中所描述的材质。

 

 

 

 

2. 渲染

 

每一种相同材质的点组成了子集subset,绘制网格时需要分别绘制Mesh中所有的子集,每种材质代表一个子集。

 

// Set the material and texture for this subset
g_pd3dDevice->SetMaterial( &g_pMeshMaterials[i] );
g_pd3dDevice->SetTexture( 0, g_pMeshTextures[i] );

// Draw the mesh subset
g_pMesh->DrawSubset( i );


 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值