嘿,我正在浏览 libgdx 的 wiki 上的基本教程,但我对这条线感到困惑
new VertexAttribute(Usage.Position, 3, "a_position"));
字符串“a_position”是做什么用的?
Mesh 类适用于 OpenGL ES 1.x 和 2.0。在 OpenGL ES 1.x 中,您使用固定功能管道(无着色器)。这里的属性没有任何用处。在 OpenGL ES 2.0 中,您编写所谓的顶点和片段着色器。如果您将网格(或者更确切地说是它的顶点)发送到您的顶点/片段着色器对,您的着色器必须有一种方法来识别特定的顶点属性,例如顶点位置、纹理坐标、颜色等。
着色器是用一种称为 GLSL 的语言编写的。顶点着色器可能如下所示:
attribute vec4 a_Position;
attribute vec4 a_Normal;
attribute vec2 a_TexCoord;
uniform mat4 u_projView;
varying vec2 v_texCoords;
varying vec4 v_color;
void main() {
v_color = vec4(1, 0, 0, 1);
v_texCoords = a_TexCoord;
gl_Position = u_projView * a_Position;
}
如您所见,有一些所谓的属性与 libgdx 中的 VertexAttributes 完全相同。因此,第三个参数是着色器中使用的 VertexAttribute 的名称(以及 libgdx 中的 ShaderProgram,如果您为了方便而使用它而不是直接使用 GLES 2.0 函数)。
hth,马里奥