我想丢弃多维数据集中不是正面的所有面,并且命令glEnable(GL_CULL_FACE);
对我不起作用。这是我的立方体坐标
private float cubeCoords[] = {
-0.25f, 0.25f, 0.25f, // front top left 0
-0.25f, -0.25f, 0.25f, // front bottom left 1
0.25f, -0.25f, 0.25f, // front bottom right 2
0.25f, 0.25f, 0.25f, // front top right 3
-0.25f, 0.25f, -0.25f, // back top left 4
0.25f, 0.25f, -0.25f, // back top right 5
-0.25f, -0.25f, -0.25f, // back bottom left 6
0.25f, -0.25f, -0.25f};
而drawOrder为:
private short drawOrder[] = {
0, 1, 2, 0, 2, 3,//front
0, 4, 5, 0, 5, 3, //Top
0, 1, 6, 0, 6, 4, //left
3, 2, 7, 3, 7 ,5, //right
1, 2, 7, 1, 7, 6, //bottom
4, 6, 7, 4, 7, 5};
当多维数据集旋转时,我可以在多维数据集中看到一个背景。
谢谢
最佳答案
使用Face Culling时,必须遵守缠绕顺序。如果启用了面剔除,则如果面的缠绕顺序为逆时针,则通过反面剔除背面。请参见glFrontFace
尊敬的glCullFace
。
从左上角开始,按从左到右的顺序对顶点进行排序:
private float cubeCoords[] = {
-0.25f, 0.25f, 0.25f, // front top left 0
-0.25f, -0.25f, 0.25f, // front bottom left 1
0.25f, -0.25f, 0.25f, // front bottom right 2
0.25f, 0.25f, 0.25f, // front top right 3
-0.25f, 0.25f, -0.25f, // back top left 4
-0.25f, -0.25f, -0.25f, // back bottom left 5
0.25f, -0.25f, -0.25f, // back top right 6
0.25f, 0.25f, -0.25f // back bottom right 7
};
正确的逆时针三角形面是:
private short drawOrder[] = {
0, 1, 2, 0, 2, 3, // front
4, 0, 3, 4, 3, 7, // top
5, 1, 0, 5, 0, 4, // left
7, 3, 2, 7, 2 ,6, // right
1, 5, 6, 1, 6, 2, // bottom
7, 6, 5, 7, 5, 4 // back
};
请注意,您必须以这种方式定义面,即从立方体(网格)的“外部”看时,缠绕顺序是逆时针方向。