顶点缓冲区中的最后一个顶点未设置

时间:2014-11-12 12:51:23

标签: graphics buffer directx-11 sharpdx

我尝试使用SharpDX在Direct11中渲染球体。我已经在OBJ模型中正确读取,创建了顶点缓冲区,并在上下文中设置缓冲区以进行渲染。

我的问题是所有渲染完全超出最后一个顶点,渲染就好像它是0,0,0。下面是一个屏幕截图: enter image description here

我已经检查了在创建缓冲区时使用的向量,并且没有丢失的数据,我甚至改变了数组中的最后一个元素:

vertexBufferArray[vertexBufferArray.Length - 1].X = 1.0f;

并没有结果。如果我将第二个元素更改为最后一个元素,那么:

vertexBufferArray[vertexBufferArray.Length - 2].X = 1.0f;

我得到了这个结果: enter image description here

我传递给渲染调用的顶点数是正确的,因为如果我将它传递给VertexCount - 1,我根本不会得到最后一个三角形,如果我将它传递给VertexCount + 100,则没有任何变化所有

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

像往常一样,在我发表关于它的重要帖子后,我最终解决问题10分钟。

问题是我的输入汇编程序,我的POSITION和NORMAL的输入元素是Format.R32G32B32A32_Float,当它们应该是Format.R32G32B32_Float时,因为我把我的顶点作为Vector3s。