在libgdx中用于VertexAttribute()的第三个参数是什么?
问题描述:
干草,我要通过基本教程libgdx的wiki,并通过我行在libgdx中用于VertexAttribute()的第三个参数是什么?
new VertexAttribute(Usage.Position, 3, "a_position"));
什么是字符串“a_position”用于很困惑?
答
的文档网格类的工作用的OpenGL ES 1.x和2.0。在OpenGL ES 1.x中,您使用固定功能管线(无着色器)。这里的属性没有任何用处。在OpenGL ES 2.0中,您可以编写所谓的顶点和片段着色器。如果您发送Mesh(或顶点)到您的顶点/片段着色器对,您的着色器必须有一种方法来标识特定的顶点属性,比如说顶点位置,纹理坐标,颜色等等。
着色器使用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的名称(因此,如果您为了方便而使用该参数,而不是直接使用GLES 2.0函数),则使用该参数中的ShaderProgram。
心连心, 马里奥
答
所以,第三个参数可以是任何单词。我们将其传递给ShaderProgram?我可以称之为“有趣的包装”,这会起作用吗? – dotty 2011-04-28 11:27:43