Ви завжди можете зробити повторний буфер "vertex; texcoord" повторити. І просто використовуйте індекси, як ви сказали. Це, мабуть, найпростіше і схоже на те, що ви знаєте.
Якщо ви хочете зберегти трохи пам’яті. Існує досить акуратне рішення, і це мати один спрайт у буфері з об'єднаними текстовими кодами та створити матрицю перетворення УФ-променів і надіслати її на ваш шейдер і помножити текстові тексти з ним (у вершинній шейдері).
Вам не доведеться створювати матриці самостійно, якщо вам це не вдається. Ви можете просто використовувати звичайні функції GL і ніж читати матрицю з glGetFloatv
функцією. Подобається це:
glGetFloatv (GL_MODELVIEW_MATRIX ,&g_TexCoordMat);
Я створив образ, щоб краще описати це. glTranslate та glScale можна виглядати так, що вони просто рухаються з ультрафіолетовим простором.
Якщо ви не знаєте, як надіслати матрицю на шейдер, я можу поділитися з вами деяким кодом.
Редагувати: Додано зображення
(джерело для спрайта, який я використовував: funorb.com )