指数的顺序是否重要?

时间:2017-06-16 06:44:19

标签: javascript webgl indices vertices

this._vertices = new Float32Array([
            -0.5, 0, 0, // left
            0, 0.5, 0, // top
            0.5, 0, 0 // right
        ]);

this._indicies = new Uint16Array([0, 1, 2]);

如你所见,我有一个三角形的3分。这个问题是我的三角形最终不会被渲染,除非我将索引更改为

this._indicies = new Uint16Array([0, 2, 1]);
你知道为什么吗?为什么指数的顺序很重要?我如何知道将索引放入的正确顺序?

聚苯乙烯。它在将绘图类型设置为LINE_LOOP时起作用,但它不适用于三角形。

2 个答案:

答案 0 :(得分:1)

如果剔除在gl.enable(gl.CULL_FACE)上,则如果它们的顶点在剪辑空间中是逆时针的(即,在顶点着色器之后),则剔除三角形。您可以选择使用gl.cullFace(...)

来顺时针或逆时针剔除哪些三角形
     0             0
    / \           / \
   /   \         /   \
  2-----1       1-----2

clockwise   counter-clockwise

答案 1 :(得分:1)

如果启用了面部剔除,顶点顺序确实很重要。前面的是什么,三角形背面的内容取决于设定的绕线顺序。如果启用了逆时针绕组(默认设置),那么面向屏幕上以逆时针顺序出现的顶点将被视为" front"侧。

如果启用了剔除,则只绘制从所选边看的三角形。