WebGL 平面着色

WebGL Flat Shading

我有一个使用 flat 限定符的顶点着色器和片段着色器,并且由于在 https://www.youtube.com/watch?v=l6PEfzQVpvM 末尾解释的复杂的 hacky 原因,我想更改 WebGL 平面着色激发顶点,它是 WebGL 在传递不同颜色时将使用的顶点编号。 (我的着色器是这样的):

// ...
flat out vec3 pass_vertexColor;
// ...

而且我知道在 OpenGL 中您可以像这样更改激发顶点:

glProvokingVertex(1 /* 2, 3 */); // i think

但我认为 WebGL 中还没有等效项。所以我的问题是:

默认的 WebGL Provoking Vertex 是什么?

WebGL 1.0 不支持平面着色。有关解决方法,请参阅

WebGL 2.0 具有平面着色。它与常规 OpenGL 具有相同的默认值 - 激发顶点是三角形的最后一个顶点。这似乎无法在 WebGL 2.0 中更改,因为 ProvokingVertex() 未通过 WebGL 2.0 API.

公开

请注意,即使在桌面 OpenGL 中,激发顶点也可以是三角形的第一个或最后一个顶点(最后一个是默认值)。不能是中间顶点