通常我使用从0到1的纹理坐标。
glTexCoord2f(0, 0);
glTexCoord2f(1, 0);
glTexCoord2f(1, 1);
glTexCoord2f(0, 1);
如果我需要纹理部分(剪裁)我使用 -
glTexCoord2f(Texture.Left / Texture.Width, Texture.Top / Texture.Height);
glTexCoord2f(Texture.Right / Texture.Width, Texture.Top / Texture.Height);
glTexCoord2f(Texture.Right / Texture.Width, Texture.Bottom / Texture.Height);
glTexCoord2f(Texture.Left / Texture.Width, Texture.Bottom / Texture.Height);
如果我需要重复纹理A x B次我使用 -
glTexCoord2f(0, 0);
glTexCoord2f(A, 0);
glTexCoord2f(A, B);
glTexCoord2f(0, B);
虽然如果我只需要重复部分纹理(剪裁),这不起作用 -
glTexCoord2f(Texture.Left / Texture.Width * A, Texture.Top / Texture.Height * B);
glTexCoord2f(Texture.Right / Texture.Width * A, Texture.Top / Texture.Height * B);
glTexCoord2f(Texture.Right / Texture.Width * A, Texture.Bottom / Texture.Height * B);
glTexCoord2f(Texture.Left / Texture.Width * A, Texture.Bottom / Texture.Height * B);
答案 0 :(得分:3)
你必须编写一个自定义片段着色器,在纹理图集内部的瓷砖上进行纹理重复。
或者将该图块移动到您想要重复的边缘,并像往常一样使用> 1和/或< 0 texcoords。