The standard SDL blitting has become too slow for the game I'm currently programming, so I've looked into using OpenGL for drawing to the screen. I've managed to make a texture out of an SDL surface (a .png sprite map) and I've also figured out how to draw this texture to the screen with alpha channel and everything. However, as the SDL surface is a sprite map, I don't want to draw the entire texture to the screen. How do I draw only the part of it that contains the relevant sprite?

I'm using this to draw the texture to the screen:

Code:
glBegin( GL_QUADS );
    //Top-left vertex (corner)
	glTexCoord2i( 0, 0 );
	glVertex3f( 0, 0, 0.0 );

	//Bottom-left vertex (corner)
	glTexCoord2i( 1, 0 );
	glVertex3f( 512, 0, 0 );

	//Bottom-right vertex (corner)
	glTexCoord2i( 1, 1 );
	glVertex3f( 512, 512, 0 );

	//Top-right vertex (corner)
	glTexCoord2i( 0, 1 );
	glVertex3f( 0, 512, 0 );
glEnd();
SDL_GL_SwapBuffers();
If I change any of these values, it just magnifies or shrinks the texture, which makes sense. I was thinking that I can just load the SDL surface spritemap into multiple textures, each holding a separate sprite, but then the textures wouldn't be a power of 2 size. So, how do I go about using my spritmap?