Hay,我正在阅读关于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完全相同。因此,第3个参数是在着色器中使用的VertexAttribute的名称(因此,如果为了方便起见而不是使用直接的GLES 2.0函数,则使用libgdx中的ShaderProgram)。
hth,
马里奥