Это может быть вопрос о нобе. Как я понимаю, glBindAttribLocation (..., AAA,...) свяжет атрибут внутри программы с идентификатором местоположения AAA, если AAA уникален. Если у меня есть следующий код:
glBindAttribLocation(..., 0, "XXX");
glBindAttribLocation(..., 1, "YYY");
Это свяжет мои две переменные с идентификатором местоположения 0 и 1. Я бы тогда позвонил:
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);
До этого момента я понимаю, что идентификаторы 0 и 1 передаются в glVertexAttribPointer() в качестве первого параметра.
Можно ли предположить, что если бы я получил идентификаторы местоположения атрибутов (как указано выше) через вызовы glGetAttribLocation(), так что возвращаемые идентификаторы были 5 и 6 вместо 0 и 1, я мог бы передать 5 и 6 в glVertexAttribPointer() и glEnableVertexAttribArray() вместо 0 и 1??