我有这个代码片段,我曾经尝试获取这些代码:
VertexBuffer vtxBuffer = new VertexBuffer(graphics.GraphicsDevice, typeof(VertexPositionNormalTextureTangentBinormal), meshPart.VertexBuffer.VertexCount, BufferUsage.WriteOnly);
VertexPositionNormalTextureTangentBinormal[] data = new VertexPositionNormalTextureTangentBinormal[meshPart.VertexBuffer.VertexCount];
meshPart.VertexBuffer.GetData<VertexPositionNormalTextureTangentBinormal>(data);
但是,我最终遇到了错误:
“该数组的大小不适合所请求的数据量。”
因此,我尝试调试问题并在某一时刻做到了这一点:
VertexBuffer vtxBuffer = new VertexBuffer(graphics.GraphicsDevice, typeof(VertexPositionNormalTexture), meshPart.VertexBuffer.VertexCount, BufferUsage.WriteOnly);
VertexPositionNormalTexture[] data = new VertexPositionNormalTexture[meshPart.VertexBuffer.VertexCount];
meshPart.VertexBuffer.GetData<VertexPositionNormalTexture>(data);
我将
VertexPositionNormalTextureTangentBinormal
替换为VertexPositionNormalTexture
和中提琴!我没有得到同样的错误!但我确实得到了:
'当前顶点声明不包括当前顶点着色器所需的所有元素。 Tangent0 丢失。'
我不确定这是模型问题还是.FBX管道问题还是......代码问题?
无论如何,我想知道是否至少是上述问题之一,谢谢!
我重新导出了启用切线空间的 FBX 模型,甚至再次使用了不同的 Blender 扩展(更好的 FBX 导出器),但它仍然无法获取 struct
VertexPositionNormalTextureTangentBinormal
的对象的信息作为错误最终还是这样:
“该数组的大小不适合所请求的数据量。”
它很可能是模型或管道问题...尽管对于管道我有点困惑,因为
VertexElementUsage.Tangent
和 VertexElementUsage.Binormal
存在,尽管完全有可能这些只是为了...其他管道.
检查型号,转到
Content Processor
,然后将Generate Tangent Frames
设置为True
。
我简直不敢相信自己...该死...