2013-03-28 66 views
2

通常,我使用的紋理座標從0到1OpenGL的重複紋理部分

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); 

如果我需要重複紋理甲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); 

回答

3

您必須編寫自定義片段着色器才能在紋理圖集內部的貼圖上進行紋理重複。

或者將該圖塊移動到您想要重複的邊緣,並照常使用> 1和/或< 0 texcoords。