Esto podría ser una pregunta novato. Según tengo entendido, glBindAttribLocation (..., AAA, ...) vinculará un atributo dentro del programa a la ID de ubicación de AAA, siempre que AAA sea único. Si tengo el siguiente código:GLES2 ¿Es glBindAttribLocation() necesario?
glBindAttribLocation(..., 0, "XXX");
glBindAttribLocation(..., 1, "YYY");
Esto se unirá mis dos variables a la ubicación de identificación 0 y 1. Entonces yo llame:
glBindBuffer(GL_ARRAY_BUFFER, VBId);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IBId);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, 0);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 6, (void *) 0 + sizeof(float) * 3);
glEnableVertexAttribArray(1);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
Hasta este punto, entiendo que los ID de 0 y 1 pasan a glVertexAttribPointer() como el primer parámetro.
¿Sería seguro asumir que si obtuve los ID de ubicación de los atributos (como arriba) a través de llamadas glGetAttribLocation(), de modo que los ID devueltos fueran 5 y 6 en lugar de 0 y 1, podría pasar 5 y 6 en glVertexAttribPointer() y glEnableVertexAttribArray() en lugar de 0 y 1 ??