iDevGames Forums
Sprite Sheets - Printable Version

+- iDevGames Forums (http://www.idevgames.com/forums)
+-- Forum: Development Zone (/forum-3.html)
+--- Forum: Graphics & Audio Programming (/forum-9.html)
+--- Thread: Sprite Sheets (/thread-2182.html)



Sprite Sheets - bmantzey - Nov 7, 2008 10:00 AM

Hey guys, I'm trying to create a system that will utilize sprite sheets and I'm having a tough time. In DirectX, the LPD3DXSPRITE object's draw function has a parameter that takes in a RECT. That rectangle basically crops a portion of the bound texture and draws that rectangular cropping.

Could somebody point me in the right direction so that I can achieve the same thing in OpenGL? Thanks in advance!


Sprite Sheets - OptimisticMonkey - Nov 7, 2008 10:27 AM

The texture coordinates control where vertexes are mapped onto the texture.

You can map a quad to a specific rectangular region using appropriate texture coordinates
e.g. this maps to a top left quadrant
glBindTexture (GL_TEXTURE_2D, 13);
glBegin (GL_QUADS);
glTexCoord2f (0.0, 0.0);
glVertex3f (0.0, 0.0, 0.0);
glTexCoord2f (0.25, 0.0);
glVertex3f (10.0, 0.0, 0.0);
glTexCoord2f (0.25, 0.25);
glVertex3f (10.0, 10.0, 0.0);
glTexCoord2f (0.0, 0.25);
glVertex3f (0.0, 10.0, 0.0);
glEnd ();

The coordinates go from 0 to 1, thus 0.5 is in the middle of the texture.

Hope that helps...


Sprite Sheets - bmantzey - Nov 7, 2008 10:52 AM

Oh nice! I should have thought about that!

I could probably use some math and make a function that will take a CGRect, use those dimensions, and convert to texture coordinates.

Thanks!


Sprite Sheets - Wowbagger - Nov 7, 2008 11:49 AM

bmantzey Wrote:I could probably use some math and make a function that will take a CGRect, use those dimensions, and convert to texture coordinates.

That's actually what I do for my mapping function, and it is quite convenient. I hightly recommend it. Smile

Granted, I use rectangular textures (and therefore use pixel coordinates for the vertices), so it's a little easier for me, but I'm sure that converting it to normalized coordinates for GL_TEXTURE_2D would be trivial.


Sprite Sheets - bmantzey - Nov 7, 2008 12:34 PM

I was just experimenting with that actually. Since PNG's are loaded upside down in OpenGL, U and V will be swapped and it's a little bit confusing.