C++ OpenGL未正确显示多维数据集的标记?

C++ OpenGL未正确显示多维数据集的标记?,c++,opengl,graphics,rendering,object-files,C++,Opengl,Graphics,Rendering,Object Files,我在自学opengl(用c++编写),我仔细考虑了一下,得到了一组构成立方体的索引: GLushort indicies[] = { 2, 0, 1, 1, 2, 3, 3, 1, 4, 5, 1, 4, 4, 5, 7, 7, 5, 6, 0, 7, 6, 0, 7, 2, 7, 0, 1, 1, 7, 4, 6, 5, 3, 6, 3, 2 }; 现在,我正试图从立方体的混合器中加载一个obj文

我在自学opengl(用c++编写),我仔细考虑了一下,得到了一组构成立方体的索引:

GLushort indicies[] =
{
    2, 0, 1,
    1, 2, 3,
    3, 1, 4,
    5, 1, 4,
    4, 5, 7,
    7, 5, 6,
    0, 7, 6,
    0, 7, 2,
    7, 0, 1,
    1, 7, 4,
    6, 5, 3,
    6, 3, 2
};
现在,我正试图从立方体的混合器中加载一个obj文件,它给了我以下指示:

GLushort indicies[] =
{
    5,3,1,
    3,8,4,
    7,6,8,
    2,8,6,
    1,4,2,
    5,2,6,
    5,7,3,
    3,7,8,
    7,5,6,
    2,4,8,
    1,3,4,
    5,1,2
};
根据我的理解,你的标记的顺序并不重要,只要三个一组组成一个三角形。然而,当我运行blender导出的obj文件时,我的多维数据集乱七八糟。我认为可能指数必须以0为基数,而不是以1为基数,所以我从每个指数中减去1,使其以0为基数:

GLushort indicies[] =
{
    4,2,0,
    2,7,3,
    6,5,7,
    1,7,5,
    0,3,1,
    4,1,5,
    4,6,2,
    2,6,7,
    6,4,5,
    1,3,7,
    0,2,3,
    4,0,1
};
我的立方体稍好一些,但底部仍然是这样:


我错过了什么?只要一组三个标记组成一个三角形,任何标记的组合都不应该起作用吗?

在Blender export中,立方体是这样的(或它的某种同构)

后面藏着两个

(4,2,0)是左侧的一半。 (2,7,3)是背部的一半。 (6,5,7)是右侧的一半,依此类推

但是,你的顶点没有意义。假设这是第一个三角形

0----1
|   /
|/
2
那你就有

0----1
|   /|
|/   |
2----3
但是请注意,(2,0,1)是顺时针的,(1,2,3)是逆时针的。OpenGL与大多数3D系统一样,只考虑正面或背面的CW或CW三角形,不会显示面向后的三角形。
这是第一个要解决的问题。确保所有三角形都是CW或CCW。

如果您也给我们提供顶点位置数组,那将非常容易。它是顶点。我有不同的顶点位置从什么搅拌机什么设置。谢谢你给我指出了正确的方向。我发现这是顶点的位置,因为它们与blender的不匹配。不过,我也感谢你对这一潜在问题的洞察。
0----1
|   /|
|/   |
2----3