什么是libgdx中用于VertexAttribute()的第三个参数?

时间:2011-04-28 07:06:47

标签: java android libgdx

Hay,我正在浏览libgdx维基的基础教程,我对这行感到困惑

new VertexAttribute(Usage.Position, 3, "a_position"));

字符串“a_position”用于什么?

2 个答案:

答案 0 :(得分:3)

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, 马里奥

答案 1 :(得分:-1)

请参阅VertexAttribute

的文档