干草,我正在浏览libgdx的Wiki的基本教程,我对这条线感到困惑

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

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

有帮助吗?

解决方案

网格类可与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,马里奥

其他提示

请参阅文档 Vertexattribute

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top