FBX SDK修复指数/绘制订单C ++

时间:2014-10-28 01:33:54

标签: c++ sdk directx fbx

我正在学习一些DirectX 11教程。我一直在使用Autodesk FBX SDK将模型导入到我的直接x场景中。但我遇到了索引的问题,也就是你绘制顶点的顺序。我的FBX类导入与Autodesk FBX转换器相同的值。然后使用FbxAxisSystem将场景转换为与DirectX兼容,然后将Z轴反转,并交换Y轴和Z轴,使旋转与我的3D建模程序中的模型匹配。到目前为止这么好吧?除了三角形完全无序。导致看起来很奇怪的网格。

我已将其缩小为两件事:要么是绘图顺序,要么是渲染。我使用std :: vector来存储顶点缓冲区和索引缓冲区。为了简化问题 - 我的顶点布局是

{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },

AFAIK渲染工作正常,但我不完全确定,因为我发现位宽和DrawIndex有点混乱。以下是一些代码:

// ... in the initialise function after importing the object
indexBufferDesc.ByteWidth = sizeof(DWORD) * sizeof(Obj->MeshIndicesBuffer);
iinitData.pSysMem = &(Obj->MeshIndicesBuffer[0]);
// ...
vertexBufferDesc.ByteWidth = sizeof(float) * sizeof(Obj->MeshVertexBuffer);
vertexBufferData.pSysMem = &(Obj->MeshVertexBuffer[0]);
// ... In the draw function
DrawIndexed(Obj->MeshIndicesBuffer.size(), 0, 0);

为了清楚我正在使用std :: vector来存储缓冲区。

如何修复索引以便以正确的顺序绘制?有公式/算法吗? FBX SDK是否具有此功能?

我已在我的G +上张贴了我想渲染的飞机。

https://plus.google.com/105066841304290992400/posts/LVb5VPQQxGw

我理解渲染多边形的基本原理(我可以使用数组渲染一个立方体),但我不知道如何生成索引以及为什么这不是在"右边&# 34;从我的FBX文件订购。

0 个答案:

没有答案