我尝试使用SharpDX在Direct11中渲染球体。我已经在OBJ模型中正确读取,创建了顶点缓冲区,并在上下文中设置缓冲区以进行渲染。
我的问题是所有渲染完全超出最后一个顶点,渲染就好像它是0,0,0。下面是一个屏幕截图:
我已经检查了在创建缓冲区时使用的向量,并且没有丢失的数据,我甚至改变了数组中的最后一个元素:
vertexBufferArray[vertexBufferArray.Length - 1].X = 1.0f;
并没有结果。如果我将第二个元素更改为最后一个元素,那么:
vertexBufferArray[vertexBufferArray.Length - 2].X = 1.0f;
我得到了这个结果:
我传递给渲染调用的顶点数是正确的,因为如果我将它传递给VertexCount - 1,我根本不会得到最后一个三角形,如果我将它传递给VertexCount + 100,则没有任何变化所有
有什么想法吗?
答案 0 :(得分:0)
像往常一样,在我发表关于它的重要帖子后,我最终解决问题10分钟。
问题是我的输入汇编程序,我的POSITION和NORMAL的输入元素是Format.R32G32B32A32_Float,当它们应该是Format.R32G32B32_Float时,因为我把我的顶点作为Vector3s。