Usando uma matriz como atributo de vértice no OpenGL3 Core Profile

Eu estou usando o OpenGL3.2 Core Profile no OSX. E eu quero fazer desenho instanciado (glDrawArraysInstanced), onde eu passo uma matriz para cada instância.

Meu shader de vértice é muito bem:

#version 150
in mediump vec4 position;
in mediump mat4 trf;
in lowp vec4 rgb;
out lowp vec4 colour;
uniform highp mat4 modelcamviewprojmat;
void main()
{
    mediump vec4 tpos = trf * position;
    gl_Position = modelcamviewprojmat * tpos;
    colour = rgb;
}

A ligação de 'trf' correu bem:

glBindAttribLocation(program, ATTRIB_TRF, "trf" );

Mas como posso passar meus dados? glVertexAttribPointer não pode passar valores maiores que 4 flutuantes. Então esta chamada falha:

glVertexAttribPointer( ATTRIB_TRF,   16, GL_FLOAT, 0, 16 * sizeof(float), ... );

Eu suspeito que eu preciso substituí-lo com 4 chamadas para glVertexAttribPointer, cada um passando 4 carros alegóricos. Mas qual valor eu poderia usar para 'index' (first parm)? Preciso usar 4 atributos de vetores e montar os quatro vetores no shader de vértice GLSL? Em caso afirmativo, que tipo de código GLSL realiza isso? Ou posso usar o valor de retorno de BindAttribLocation e usar val + 0, val + 1, val + 2 e val + 3 para todas as linhas?

questionAnswers(1)

yourAnswerToTheQuestion