绘制带有纯色面的立方体的最佳方法

时间:2015-09-18 13:12:40

标签: directx directx-11

完全是DirectX(11)的新手,所以这个问题将是非常基本的。对不起。

我想在屏幕上绘制一个有着纯色面孔的立方体。我见过的所有例子都有8个顶点,每个顶点都有一个颜色(红色,绿色,蓝色)。然后,像素着色器在这些顶点之间进行插值,以提供一系列颜色。这看起来不错,但不是我想要达到的目标。我只喜欢一个有六个彩色面孔的立方体。

我想到了两个想法:

  1. 使用24个顶点,并且每个顶点仅引用一次,即不共享。这样我就可以在每个3D位置定义三种不同的颜色,每个面部一个。
  2. 为每个“拉伸”的脸使用纹理,使脸部具有正确的颜色。我现在对纹理不是很熟悉,所以对这个想法并不是那么肯定。
  3. 实现这种效果的典型/规范方法是什么?我确信这个“问题”已经解决过很多次了。

2 个答案:

答案 0 :(得分:1)

对于您的特定问题,顶点着色可能是最简单和最佳的解决方案。但是你的模型越复杂就越难以创建一个合适的顶点着色,因为你并不总是希望将你的想象力限制在底层几何体中。

通常,3D对象使用一个或多个纹理着色。因此,您可以创建一个UV-Mapping(wiki),它可以将三维曲面展开到2D平面(纹理)上。现在,您可以在对象上想要颜色的任何分辨率下自由绘画,这样您就可以最自由地使模型看起来像您想要的那样。

当然每个应用程序都有自己的特性,所以有些项目会选择另一种方法,但我认为这是最流行的模型着色方式。

答案 1 :(得分:1)

选项1是以下方式:

  • 您希望脸部之间出现零色彩
  • 您希望面部之间出现零纹理渗透
  • 您以后想要将颜色用作照明方案ala Minecraft

注意事项:

  • 可以使用更多的内存作为更多的顶点使用(根据你的对象的大小及其空间分辨率,有一些技术可用。例如,使用1个字节用于x / y / z而不是浮点数)