2011-04-28 2 views

Répondre

3

la classe Mesh fonctionne avec OpenGL ES 1.x et 2.0. Dans OpenGL ES 1.x, vous utilisez un pipeline à fonction fixe (pas de shaders). Ici, l'attribut n'a aucune utilité. Dans OpenGL ES 2.0, vous écrivez ce que l'on appelle des vertex et fragment shaders. Si vous envoyez un maillage (ou plutôt ses sommets) à votre paire vertex/fragment shader, vos shaders doivent avoir un moyen d'identifier des attributs de vertex spécifiques, par exemple la position du vertex, les coordonnées de la texture, les couleurs, etc.

Les shaders sont écrits dans un langage appelé GLSL. Un vertex shader pourrait ressembler à ceci:

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; 
} 

Comme vous pouvez le voir, il y a ce qu'on appelle les attributs qui sont exactement les mêmes que dans VertexAttributes libgdx. Le troisième paramètre est donc le nom d'un VertexAttribute tel qu'il est utilisé dans un shader (et donc ShaderProgram dans libgdx, si vous utilisez cela pour plus de commodité au lieu d'aller avec les fonctions droites de GLES 2.0).

HTH, Mario

+0

Donc, le 3ème argument, peut être n'importe quel mot. Que passons-nous sur le ShaderProgram? Je pourrais l'appeler "funbags" et cela fonctionnerait? – dotty

0

Voir la doc pour VertexAttribute

+0

Il dit "l'alias de l'attribut utilisé dans un ShaderProgram", ce qui signifie? – dotty

+0

Vous avez raison. Désolé .... supprimé. – rajath

Questions connexes