rotatef
вращается вокруг начала координат. Таким образом, вы можете настроить геометрию куба так, чтобы его координаты располагались с началом координат на грани, вокруг которой вы хотите вращаться, или вы можете сделать это самостоятельно во время выполнения с помощью быстрого вызова translatef
.
Итак, если предположить, что ваш куб равен 2 единицам в каждом направлении (то есть простирается на одну единицу от центра как положительно, так и отрицательно), то тогда, где у вас, вероятно, есть что-то вроде:
glRotatef(90, 0, 1, 0);
somehowDrawCube();
Вы бы положили:
glRotatef(90, 0, 1, 0);
glTranslatef(-1, 0, 0); // to align the right face onto the local origin
somehowDrawCube();