1
\$\begingroup\$

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.

\$\endgroup\$
  • 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\$ – MichaelHouse Dec 11 '12 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 '12 at 1:46
2
\$\begingroup\$

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.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.