Advertisement Jump to content
Sign in to follow this  
noatom

Is sprite transform applied before or after cropping?

This topic is 1779 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

So if I have a sprite with a rect to crop from the main texture,is the texture cropped and then transformed by the matrix,or the main texture is is transformed and then cropped?

Share this post


Link to post
Share on other sites
Advertisement

Drawing is done along the scanlines of the framebuffer. Which scanlines and also which span on each of the scanlines are touched depends on the sprite's geometry, i.e. the vertices' positions after transformation to screen space.

 

For each pixel on a span the belonging texture co-ordinates are computed and used to sample the texture, considering the set filter method (i.e. bi-linear). The resulting color is then used for the pixel.

 

The mapping between the pixel co-ordinates and the texture co-ordinates can be understood as computing the span in the texture that corresponds to the span in the framebuffer. So, cropping in the usual meaning of image processing is not done at all, although the effect is the same.

 

I hope I've understood your question correctly.

Edited by haegarr

Share this post


Link to post
Share on other sites

the rectangular sprite quad is transformed, then clipped to the viewing frustrum. Sections of scan lines in the quad that pass viewing frustum clip are then texture mapped as described above, assuming a z-buf check on the pixel is passed first.

Share this post


Link to post
Share on other sites

It's worth adding to all of this that a "sprite" is nothing more than a wrapper around vertex buffers, index buffers, textures, states and draw calls, rather than being any kind of separate object type.  So it will follow the very same transformation and rasterization rules and any other geometry.

Share this post


Link to post
Share on other sites

I'm sorry but I still don't quite get it:

 

if i have a big image that contains 4 sprites. And I pass a rect (to crop from it just 1 sprite) and a transform matrix(that i just put into the sprite),will it:

 

-crop the sprite from the main image, and then transform it

-transform the main image,and the crop the sprite out of it

 

 

EDIT: Well as someone said...sprites are made of vertices...so technically,the vertices are transformed first,and then a texture is mapped to them...so the transform would be done first...

Edited by noatom

Share this post


Link to post
Share on other sites

Forget about cropping. There is no cropping. Once your vertices are transformed into their screen positions (you'll have four for a sprite, defining two triangles) then each pixel of the triangle is rendered using the rasterizer. As it draws each pixel it will sample the texture at the interpolated texture co-ordinate to get the diffuse colour for that pixel.

 

I recommend building your own sprite renderer as an exercise, or even for real use. D3DXSprite (I assume you are using) is very general purpose so has overhead you may not need. All you need is an indexed triangle list - four verts for the corners of the sprite with the appropriate texture co-ordinates defined, then an index list creating two triangles from the four verts.

 

Once you've got your head round this D3DXSprite will make more sense if you choose to go back to it. If you jump straight from old-school sprite approaches into using D3DXSprite I can see how you end up very confused about what it is doing.

Edited by Aardvajk

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!