2013-02-13 42 views
1

我是一个非常新的Direct3D,并且在几天内一直在寻找解决方案来解决我的问题。我所看到的大多数教程都只使用一种纹理。对于我的程序,我有多个纹理映射到构成网格的特定顶点集合。在托管Direct3D中渲染多个纹理9

我的问题是如何在我的场景中加载多个纹理?以及如何将顶点集合映射到仅一个纹理?

例如,如果我有一辆车的网,我不得不状纹理的集合:

Tyres.dds 
Body.dds 
Cabin.dds 

考虑到车,我怎么映射组成轮胎的tyres.dds顶点纹理,身体body.dds和机舱cabd.dds。所有这些纹理不得不渲染一个。

任何帮助将不胜感激, 谢谢

回答

1

这通常是通过子网来完成。这意味着网格由几个部分组成,这些部分被表示为例如。三角列表。每个子网格分配一个材料。这种材料可以根据你的需要定义。它可能包括漫反射颜色,粗糙度和纹理。

因此,在渲染网格时,基本上会迭代每个子网格,将材质参数发送到图形卡,然后绘制它。

DirectX 10中的另一个可能的解决方案是将顶点声明扩展为TextureIndex变量。或者你可以使用三维纹理坐标。这样,您可以将所有纹理作为纹理阵列发送到图形卡,并用一次绘制调用绘制网格。但是,在DirectX 9中不支持纹理数组。因此,您可以坚持方法1或尝试模拟纹理数组。