Eu estou desenvolvendo um jogo 2D mecanismo que suporte 3D no futuro. Nesta atual fase de desenvolvimento, eu estou trabalhando no lote renderizador. Como alguns de vocês sabem, quando lotes de gráficos juntos, suporte uniforme de cor (RGBA), coordenadas de textura, textura ID (textura índice), e o modelo de matriz de transformação ir para fora da janela, mas em vez disso, são transmitidas através do buffer de vértices. Agora, eu tenho implementado passando o modelo de posições, cor, coordenadas de textura, e a textura de IDENTIFICAÇÃO para o buffer de vértices. O meu vertex buffer formato parece com isso agora:
float* v0 = {x, y, r, g, b, a, u, v, textureID};
float* v1 = {x, y, r, g, b, a, u, v, textureID};
float* v2 = {x, y, r, g, b, a, u, v, textureID};
float* v3 = {x, y, r, g, b, a, u, v, textureID};
Eu estou prestes a integrar o cálculo onde o objeto deve ser no espaço do mundo usando uma matriz de transformação. Isso me leva a fazer a pergunta:
Deve a matriz de transformação a ser multiplicado pelo modelo posições dos vértices na CPU ou GPU?
Algo para se manter em mente é que se eu passar ele para o buffer de vértices, eu teria que carregar a matriz de transformação de uma vez por vértice (4 vezes por sprite) o que me parece um desperdício de memória. Por outro lado, multiplicando-se o modelo de posições dos vértices por a matriz de transformação na CPU parece que ele iria ser mais lento em comparação com a GPU concorrência capacidades.
Isto é como o meu vertex buffer formato seria como se eu calcular a transformação na GPU:
float* v0 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
float* v1 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
float* v2 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
float* v3 = {x, y, r, g, b, a, u, v, textureID, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15};
A questão é, principalmente, teoricamente orientada. Assim, um conhecimento teórico e técnico resposta seria muito apreciada. Mas para a referência, aqui está o código.