0
votes

enter image description here

I already asked a question about texture mapping and these two are related (this question).

I'm working with Quartz Composer which appears to be kind specific with textures...

I have a complex polygon that I triangulate in a specific coordinate system (-1 -> 1 on x | -0.75 -> 0.75 on y). I obtain an array of triangles vertices in this coordinate system (triangles 1 to 6 on the left pic).

Then I render each polygon separately (it's necessary for my program), by applying a scale function on its vertices from this coordinate system to OpenGL one (0. -> 1.). Here, even if for 0->1 range it's kind of stupid :

return (((1. - 0.) * (**myVertexXorY** - minTriangleBound)) / (maxTriangleBound - minTriangleBound)) + 0.;

But I want one image to be textured on these triangles (like on the picture above). So I begin by getting the whole polygon bounds (1 on the right pic), then the triangle bounds (2 on the right pic). I scale 1 to the picture coordinates (3 on the right pic) in pixels, then I get the triangle bounds (2) in pixels.

It gives me the bounds to lock my texture in OpenGL with Quartz :

NSRect myBounds = NSMakeRect(originXinPixels, originYinPixels, widthForTheTriangle, heightForTheTriangle);

And I lock my texture

[myImage lockTextureRepresentationWithColorSpace:space forBounds:myBounds];

Then, with OpenGL :

for (int32 i = 0; i < vertexCount; ++i)
                    {
                        verts[i] = myTriangle.vertices[i];

                        texcoord[0] = [self myScaleFunctionFor:XinQuartzCoordinateSystem From:0 To:1]
                        texcoord[1] = [self myScaleFunctionFor:YinQuartzCoordinateSystem From:0 To:1]

                        glTexCoord2fv(texcoord);

                    }

And I obtain what you can see : sometimes parts of the image are fitting, sometimes no (well, in fact with this particular polygon, it doesn't fit at all...).

1

1 Answers

1
votes

I'm not really sure if I did understand your question, but:

What hinders you from directly supplying texture coordinates that do match the topology of your source picture? This was far easier than trying to find some per triangle linear mapping that moves the picture in the right way.