Контексты OpenGL связаны с потоками, т. Е. Пока контекст OpenGL связан (с помощью gl * MakeCurrent), только вызовы функций, сделанные из потока, с которым связан контекст, будут влиять на этот контекст. Вы можете связать контекст с другим потоком (сначала отсоедините его). Или простыми словами, это просто не работает так, как вы думаете.
Однако вы все равно совершенно ошибаетесь. OpenGL - это не граф сцены. glRotatef влияет только на матрицу вида модели. А OpenGL не знает объектов, он просто знает примитивы.
Основной шаблон в OpenGL состоит в том, что вы устанавливаете все необходимое состояние непосредственно перед рисованием. Таким образом, вы вызываете функцию отображения в цикле, устанавливаете в ней область просмотра и проекцию, а затем выполняете итерацию по всем объектам, для каждого объекта устанавливается правильная матрица вида модели. И в зависимости от вашего приложения вы можете выполнять эти шаги несколько раз в функции дисплея. А в вашем случае таймер должен увеличивать угол поворота, который затем используется в функции отображения для создания правильной матрицы вида модели.