спасибо

правда я сделал немного по другому, хотя в целом тоже самое:
//рисуем затекстурированый полигон из общей текстуры
void _DrawTXT (float W,//размеры всей текстуры
float H,
float t_x,//координаты верхнего левого угла в текстуре
float t_y,
float t_dx,//размеры куска текстуры
float t_dy,
float x,
float y,
float dX,
float dY,
float delta,//угол поворота
int center)
{
glLoadIdentity();
glTranslatef(x,y,0);
glRotatef(delta,0,0,-1);
if (center==1) {glTranslatef(-dX/2,-dY/2,0);}//смещаем по центре
glBegin( GL_QUADS );
// Верхний левый угол
glTexCoord2f((t_x/W),(t_y/H)); glVertex2f( 0, 0 );
//Нижний левый угол
glTexCoord2f((t_x/W),((t_y+t_dy)/H)); glVertex2f( 0, dY );
//Нижний правый угол
glTexCoord2f(((t_x+t_dx)/W),((t_y+t_dy)/H)); glVertex2f( dX, dY );
//Верхний правый угол
glTexCoord2f(((t_x+t_dx)/W), (t_y/H) ); glVertex2f( dX, 0 );
glEnd();
glLoadIdentity();
}