I have a 2D quad. Let say it's position is (5,10) and size is (7,11).

I want to texture it with one texture, but using three different parts of it. I want to texture the part of quad from x = 5 to x = 7 with part of texture from U = 0 to U = 0.5 (replaying it after achieving 0.5, so I will have 4 same 0.5-lenght fragments). The second one with some other part of texture (also repeating it) and third in the same style.

But, how to achieve it?

I know that:

float2 tc = fmod(input.TexCoord, textureCoordinates.zw - textureCoordinates.xy) + textureCoordinates.xy; //textureCoordinates.xy = fragments' offset

Will give me the texture part replaying.

  • 1
    \$\begingroup\$ You need a vertex for a texture coordinate. You can't apply texture coordinates mid-triangle (as far as I know). Just break your quad into smaller quads, or make a new texture that matches your desired output. \$\endgroup\$
    – House
    Dec 11, 2012 at 23:28
  • \$\begingroup\$ You could also use some kind of weird shader, but breaking it into multiple quads seems like the optimal solution. \$\endgroup\$
    – Apples
    Dec 12, 2012 at 1:46

1 Answer 1


The easiest way to do this is to break the quad into multiple smaller quads. You'll need a to input a coordinate for the texture, and the easiest way to do that is with a vertex.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .