1

我是相当新的 Direct3D 并且几天来一直在寻找解决我的问题的方法。我见过的大多数覆盖纹理的教程只使用一种纹理。对于我的程序,我有多个纹理映射到构成我的网格的特定顶点集合。

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

例如,如果我有一个汽车网格并且我有一组纹理,例如:

 Tyres.dds
 Body.dds
 Cabin.dds

给定这辆车,我如何将构成轮胎的顶点映射到 tyres.dds 纹理,将车身映射到 body.dds 以及将舱室映射到 Cabin.dds。所有这些纹理不仅要渲染一个。

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

4

1 回答 1

1

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

所以在渲染网格的时候,你基本上会迭代每个子网格,将材质参数发送到显卡,然后绘制。

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

于 2013-02-14T11:21:54.897 回答