Directx9 Index Buffers&多个流

时间:2010-02-21 07:21:56

标签: c++ directx

我试图编写一个3DS Loader,它有一个OpenGL渲染实现,可以在我的通用渲染系统中使用。

这里的问题是我将顶点索引到一个数组,并将纹理坐标索引到另一个数组。我不想通过检查坐标和纹理坐标的每个顶点组合来生成一组新的索引和原始顶点,那么如何在directx中以最佳方式指定缓冲区中的两个数组呢?

我想要的是有3个顶点缓冲区,一个用于顶点,一个用于纹理坐标,一个用于顶点法线。然后我会为这三个都有索引缓冲区。我不知道我会怎么做。

我在directx9和C ++工作

1 个答案:

答案 0 :(得分:3)

就图形卡而言,如果2个顶点具有相同的位置和不同的tex坐标(或不同的任何顶点元素),那么它们就是不同的顶点。无论你在OpenGL下做什么,它们都将被存储在卡上,并且位置/ tex coord是复制的(驱动程序只是隐式地展开顶点)。 DirectX强迫您这样做。

多个Streams略有不同,但扩展到相同的东西。即两个流中只有一个索引值。

因此,最佳地,您需要将两个列表扩展为一个大列表,并适当地设置单个列表。