代码之家  ›  专栏  ›  技术社区  ›  Agnel Kurian

Direct3D:使用单个DrawIndexedPrimitives调用绘制纹理多维数据集。可能吗?

  •  2
  • Agnel Kurian  · 技术社区  · 15 年前

    我尝试只使用8个顶点和一个 drawIndexedPrimitives绘制纹理立方体。这是可能的吗?

    我对紫外线坐标有问题。我发现不可能找到适合立方体所有面的紫外线值。

    以下列编号为例:

    顶点A的UV设置为(0,0)。对于与A对角相对的所有顶点(在共享A作为顶点的所有三个面上),我将UV设置为(1,1)。现在,没有顶点的三个面最终有两个顶点,每个顶点的UV值为(1,1)。据我所知,情况不应是这样的。

    那么解决方案是什么?打电话。这是可能的吗?

    我对紫外线坐标有问题。我发现不可能找到适合立方体所有面的紫外线值。

    以下列编号为例:

    Cube with UV Values

    顶点A的UV设置为(0,0)。对于与A对角相对的所有顶点(在共享A作为顶点的所有三个面上),我将UV设置为(1,1)。现在,没有顶点的三个面最终有两个顶点,每个顶点的UV值为(1,1)。据我所知,情况并非如此。

    那么解决方案是什么?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Nils Pipenbrinck    15 年前

    如果一个顶点有多个UV坐标,则不可能。

    要解决此问题,请复制顶点位置并为每个副本指定唯一的UV坐标。在最坏的情况下,这会将立方体的顶点数增加到24个(每边四个)。

    不管他是使用OpenGL还是DirectX,这都是每个人都做的事情。对于一个立方体来说,这可能看起来像是浪费了很多内存,但是在实践中——对于现实世界中的模型来说——顶点复制的数量并没有那么高。

    然后,您可以通过对drawIndexedPrimitive的单个调用来绘制多维数据集。