2

通常、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);
4

1 に答える 1

3

テクスチャ アトラスの内部のタイルでテクスチャを繰り返すには、カスタム フラグメント シェーダを記述する必要があります。

または、そのタイルを繰り返したいエッジに移動し、通常どおり >1 および/または <0 texcoords を使用します。

于 2013-03-28T19:44:03.277 に答える