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时起作用,但它不适用于三角形。
答案 0 :(得分:1)
如果剔除在gl.enable(gl.CULL_FACE)
上,则如果它们的顶点在剪辑空间中是逆时针的(即,在顶点着色器之后),则剔除三角形。您可以选择使用gl.cullFace(...)
0 0
/ \ / \
/ \ / \
2-----1 1-----2
clockwise counter-clockwise
答案 1 :(得分:1)
如果启用了面部剔除,顶点顺序确实很重要。前面的是什么,三角形背面的内容取决于设定的绕线顺序。如果启用了逆时针绕组(默认设置),那么面向屏幕上以逆时针顺序出现的顶点将被视为" front"侧。
如果启用了剔除,则只绘制从所选边看的三角形。