我正在尝试使用8个顶点和一个DrawIndexedPrimitives
调用绘制纹理立方体。这甚至可能吗?
我遇到了UV坐标问题。我发现不可能提出适用于立方体所有面的合适UV值。
以下面的编号为例:
对于顶点A,UV设置为(0,0)。对于与A对角相对的所有顶点(在共享A作为顶点的所有三个面上),我将UV设置为(1,1)。现在,没有A作为顶点的三个面最终具有两个顶点,每个顶点具有UV值(1,1)。我的理解是,情况并非如此。
那么解决方案是什么?
答案 0 :(得分:4)
如果单个顶点有多个UV坐标,则无法实现。
要解决此问题,请复制顶点位置并为每个副本指定唯一的UV坐标。在最坏的情况下,这会将立方体的顶点数增加到24(每边四个)。
不管他是使用OpenGL还是DirectX,这都是每个人都做的事。对于一个立方体来说,这可能看起来像浪费很多内存,但在实践中 - 使用真实世界的模型 - 顶点重复的数量并不高。
之后,您只需调用DrawIndexedprimitive即可绘制多维数据集。