Когда я поворачиваю объект в OpenGL, ось также вращается вместе с объектом.
Преобразование не поворачивает объект, оно вращает систему координат. Цепные вращения являются некоммутативными. Так что вы должны просто просто: поменять операции вращения, которые применяются первым поворотом, т. Е. Последнее, которое вы умножаете на стек, обозначает вращение вашего объекта, а затем (то есть ранее умноженное) с другим вращением.
КСТАТИ: В комментарии Вы писали:
хранить предыдущее преобразование с помощью glGetDoublev, а затем перед нанесением нового поворота, я загрузить матрицу на glLoad, а затем умножить его с новой матрицей вращения. В моем приложении я должен сериализовать объект на диске, поэтому я сделал это так. Наряду с объектом я также храню матрицу преобразования
Это говорит о том, что вы ошиблись в OpenGL для графа сцены или математической математической библиотеки. Это не так. Не используйте OpenGL в качестве «хранилища объектов» (он не работает так) и не полагаются на функции матрицы OpenGL (они все равно удалены из OpenGL-3).
Можете ли вы показать свой код с частью умножающих матриц? – SAKrisT
Я сохраняю предыдущее преобразование, используя glGetDoublev, а затем перед применением нового вращения я загружаю эту матрицу glLoad, а затем умножаю ее на новую матрицу вращения. В моем приложении я должен сериализовать объект на диске, поэтому я сделал это так. Наряду с объектом я сохраняю матрицу преобразования. – Aarkan