Sign in to follow this  
Algotsson

Combining Matrices with ID3DXSprites

Recommended Posts

I'm doing a 2D sidescrolling game with Visual Basic.NET and DirectX 9. I've decided to use the ID3DXSprite interface instead of hard coding it with vertex buffers, vertices and you-name-it. I would like to know if it's possible to transform the Sprites by using Matrices. Example: Mirror the Sprite by using Matrix.Scaling(-1,1,1) or something; or maybe transpose the sprite etc etc. The main reason for why I want to do this is because I want to mirror the character in my game so that he can turn around. This was very easy in DX8, where they had a "Scaling"-property in the arguments of the Draw sub. But apparently, this doesn't work in DX9. So I started to wonder if I maybe could use the functionality of the Matrices to make the mirroring (and eventually get some other nice effects as a bonus). I'm using the Draw2D command, maybe there's something else that is better in this case. Thanks!

Share this post


Link to post
Share on other sites
Yeah, I've been trying a couple of things with the Transform property. But I haven't been able to get any visual results. Sure, I can scale and transpose the matrix, but how do I connect it with the Sprite. My Sprite stays unaffected.

Here's some of my code


Dim m As Matrix

D3DDevice.SetTexture(0, texBackGround)
D3DDevice.Clear(ClearFlags.Target, Drawing.Color.White, 0, 0)
D3DDevice.BeginScene()

MySprite.Begin(SpriteFlags.AlphaBlend)

m = MySprite.Transform
m.Scale(-5, 5, 0)
MySprite.Transform = m

MySprite.Draw2D(texBackGround, Rectangle.Empty, Rectangle.Empty,
Character.Center, Character.Rotation, New Point(Character.X,
Character.Y), System.Drawing.Color.White)

MySprite.End()
D3DDevice.EndScene()
D3DDevice.Present()



I guess there's one easy but important detail that I've missed. [?]

[Edited by - Muhammad Haggag on November 12, 2005 10:37:49 PM]

Share this post


Link to post
Share on other sites
Thanks for the tips. Though, it did not make any difference.

Are there maybe any special things that must be done with the Direct3D.Device before you can use Matrices?

Share this post


Link to post
Share on other sites
I think the problem is that it doesn't like a negative scale factor. It should work if you use positive values. At least, it does with the non-managed SDK.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this