OpenGL ES 2.0 Shader meilleures pratiques

J'ai été à la recherche pour des exemples de shaders OpenGL et j'ai vu des différents styles. Certains shaders utiliser le construit en types (ie. gl_Vertex) pour transférer des données vers et depuis le code de l'application et le shader.

Certains shaders utiliser les divers types pour le transfert de données à partir du sommet de fragment shader au lieu de gl_Position et gl_FragColor.

Certains shaders utiliser les préfixes " in " et " out " pour spécifier de transfert de données:

in vec3 vertex;

void main() {
    gl_Position = projection_matrix * modelview_matrix * vec4(vertex, 1.0);
}

... tandis que d'autres utilisent des attributs:

attribute vec4 vertex_attrib;
attribute vec4 tex_coord_attrib;
attribute vec4 color_attrib;
uniform mat4 mvp_matrix;
uniform mat4 texture_matrix;
varying vec4 frag_color;
varying vec2 tex_coord;

void main(void)
{
  gl_Position = mvp_matrix * vertex_attrib;
  vec4 transformed_tex_coord = texture_matrix * tex_coord_attrib;
  tex_coord = transformed_tex_coord.st / transformed_tex_coord.q;
  frag_color = color_attrib;
}

Ma question est, quel est le meilleur moyen dans GLES 2.0 pour écrire des shaders? Est-il un guide des meilleures pratiques? Quelqu'un peut-il fournir un exemple d'un sommet & fragment shader est un brillant exemple de " que faire??

Grâce.

OriginalL'auteur MarkP | 2011-09-24