Estoy desarrollando un juego en 2D motor que soporte 3D en el futuro. En esta fase actual de desarrollo, estoy trabajando en el lote procesador. Como algunos de ustedes saben, cuando la selección de lotes de gráficos juntos, el apoyo uniforme de color (RGBA), las coordenadas de textura, textura (textura índice), y la transformación del modelo de matriz de salir por la ventana, pero en su lugar pasa por el vértice de búfer. Ahora, me han implementado aprobar el modelo de las posiciones, color, coordenadas de textura, y la textura de IDENTIFICACIÓN para el vertex buffer. Mi vertex buffer formato mira como esta ahora:
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};
Estoy a punto de integrar el cálculo en el que el objeto debe estar en el mundo espacio utilizando una matriz de transformación. Esto me lleva a una pregunta:
Debe la transformación de la matriz se multiplica por el modelo de vértice posiciones en la CPU o la GPU?
Algo a tener en cuenta es que si me pase el vertex buffer, tendría que subir la matriz de transformación una vez por cada vértice (4 veces por sprite) que me parece un desperdicio de memoria. Por otro lado, multiplicando el modelo de vértice posiciones de la matriz de transformación de la CPU parece que sería más lento en comparación con el GPU de la concurrencia de las capacidades.
Esta es la forma en que mi vertex buffer formato sería como si me calcular la transformación en la 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};
La pregunta es en su mayoría teóricamente impulsados. Así, una teórica y técnica de la respuesta sería muy apreciada. Pero para referencia, aquí está el código.