Answers:
您总是可以使looong缓冲区“ vertex; texcoord”重复。只需使用索引即可。它可能最简单,并且与您所知道的类似。
如果要节省一些内存。有一个非常好的解决方案,那就是在缓冲区中将一个精灵与texcoords结合在一起,创建UVs转换矩阵,并将其发送到您的着色器,然后将其与texcoords相乘(在顶点着色器中)。
如果您对此不满意,则不必自己创建矩阵。您可以只使用常规GL函数,而不可以读取具有glGetFloatv
函数的矩阵。像这样:
glGetFloatv (GL_MODELVIEW_MATRIX ,&g_TexCoordMat);
我创建了图像以更好地描述它。可以将glTranslate和glScale视为它们只是随UV空间移动。
如果您不知道如何将矩阵发送到着色器,我可以与您共享一些代码。
编辑:添加图片
(我使用过的spritesheet的源:funorb.com)