2013-07-03 23 views
1

我想我只是很愚蠢的,但现在我似乎无法想到一个非常好的办法做到这一点:产生从8点垂直法线立方体

基本上我创建的负载DirectX中的多维数据集,并使用VertexPositionColor来存储数据。要有效地存储立方体,我只需存储每个立方体8个点。事情是,我想让每个脸部的法线指向正面,而正面的法线是(0,0,1),背面的法线是(0,0,-1)。

我的问题是如何从8点立方体有效地解决这个问题。我知道我可以用24点立方体表示很容易做到,但从记忆的角度来看,这看起来效率低下。

任何想法,我可以做到这一点?最好在着色器或有效的东西?

感谢

回答

0

您可以使用indecies节省一些内存,这将是4,4花车+ 4个* 6个整数每方,这将是56个* 4个字节而不是96 * 4个字节,但仅此而已你可以这样做,除非在多维数据集之间共享一些点。

0

随着着色器模型3或更少,您必须复制顶点,除非可以在每个顶点平衡3个法线。

在着色器模型3+中,您可以将索引缓冲区显示给着色器,并使用SV_VertexID从顶点/外壳着色器中的3个顶点计算法线,但由于您始终输出8个顶点,因此无法将其发送到下一个阶段。

在几何体/域着色器中,您可以看到可以从中计算法线的三角形。

复制立方体顶点是可以的,并且由于您创建了立方体的加载,因此使用几何实例