Anda selalu dapat membuat buffer looong "vertex; texcoord" diulang. Dan cukup gunakan indeks bagaimana Anda mengatakannya. Ini mungkin paling mudah dan agak mirip dengan apa yang Anda ketahui.
Jika Anda ingin menghemat memori. Ada solusi yang cukup rapi dan memiliki satu sprite dalam buffer dengan menyatukan texcoords dan membuat matriks transformasi UV dan mengirimkannya ke shader Anda dan gandakan texcoords dengan itu (dalam vertex shader).
Anda tidak perlu membuat matriks sendiri jika Anda tidak setuju dengan itu. Anda bisa menggunakan fungsi GL biasa dan membaca matriks dengan glGetFloatv
fungsi. Seperti ini:
glGetFloatv (GL_MODELVIEW_MATRIX ,&g_TexCoordMat);
Saya membuat gambar untuk menggambarkannya dengan lebih baik. glTranslate dan glScale dapat dilihat karena mereka hanya bergerak dengan basis ruang UV.
Jika Anda tidak tahu cara mengirim matriks ke shader saya dapat membagikan beberapa kode dengan Anda.
Sunting: Menambahkan gambar
(sumber untuk spritesheet yang saya gunakan: funorb.com )