Вы можете сделать свои собственные матрицы преобразования. Им даже не нужно «иметь смысл», вы можете заселить их любыми странными искажениями, которые вы считаете нужными. Например, сдвиг должен выглядеть примерно так:
float shear[] = {
1, Ky, 0, 0,
Kx, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1 };
glMultMatrixf(shear);