Эй, я просматриваю базовый учебник на вики libgdx, и меня смущает строка
new VertexAttribute(Usage.Position, 3, "a_position"));
Для чего используется строка «a_position»?
Эй, я просматриваю базовый учебник на вики libgdx, и меня смущает строка
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;
}
Как видите, есть так называемые атрибуты, которые точно такие же, как VertexAttributes в libgdx. Таким образом, третий параметр — это имя VertexAttribute, используемого в шейдере (и, следовательно, ShaderProgram в libgdx, если вы используете его для удобства вместо прямых функций GLES 2.0).
хт, Марио
См. документ для Атрибут вершины