1

嘿,我正在浏览 libgdx 的 wiki 上的基本教程,但我对这条线感到困惑

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

字符串“a_position”是做什么用的?

4

2 回答 2

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

于 2011-04-28T10:56:41.553 回答
-1

请参阅VertexAttribute的文档

于 2011-04-28T07:51:21.140 回答