我正在尝试加载和显示(极其简单)波前OBJ文件 .

我让解析器工作100%...它从文件加载数据并将它们存储在程序的结构中 .

现在是我完全没有找到目标数据结构的任何信息的部分 .

我不知道如何使用Vertex缓冲区和索引缓冲区,我只在OpenGL中使用了显示列表和立即模式 .

现在我正在尝试使用Managed Direct X,我在围绕这个问题缠绕我的大脑时遇到严重问题 .


有几件我很困惑的事情......

1)有没有关于如何在MDX中存储和渲染简单的VB和IB对象的好教程?

2)我应该使用什么顶点格式?如果Vertex没有定义一个(因此某些面可能具有法线,纹理和位置索引而其他面可能具有JUST位置),OBJ规范允许您错过纹理或法线索引 . 那么我只是将它存储在CustomVertex.PositionNormalTexture中,如果它们没有在OBJ中定义,那么将法线和纹理留空?

3)这是我最难理解的(可能源于我对VB和IB的概念的无知) . OBJ规范允许(和我的示例文件具有)具有任意数量的顶点索引的面 . 基本上,面部可以定义为

f 1/1 2/2 3/3 4/4 5/5 6/6 7/7 8/8 9/9 10/10

问题是,我该如何渲染?那是三角形条,多边形等吗?


作为替代方案,如果有人知道任何预先存在的解决方案(这是一个非常轻量级且文档齐全的C#上可以加载OBJ本身或通过已经制作的插件的3D系统),那也是好的 .

Mogre出局了,这么差的文档很可笑(不正确的Wiki信息,文档中的不一致等等)

我试过Irrlicht,这是我最接近的 . 它有一个内置的OBJ加载器,这很好(并且不会抛出任何异常,比如90%的其他预构建的OBJ查看器(我认为这是由于任意的顶点面,大多数解析器似乎都修复了最多3或4).Irrlicht的唯一问题是A.)我无法弄清楚如何将纹理应用到OBJ文件,以及B.)我无法弄清楚如何将它渲染到控件而不是而不是整个表单(想要窗口窗体UI与控件中嵌入的3D视口) .

如果你能解决任何一个Irrlicht的问题,那也是一个公认的答案 .

编辑:此外,如果您知道一个C#库或一个非常小的命令行.exe,我可以用它来转换OBJ到另一个更容易使用的3D格式,我也想知道 .