Изрядно повозившись с OpenGL, разобрался с отображениями изображения. Есть такое понятие таблица отображений. Она отвечает за статичную сцену и очень заметно повышает производительность, например, крутить сцену за счет того, что объекты сцены хранятся в буфере. Почему в моей проге сферу можно быстро крутить без тормозов? (у меня без тормозов) Потому что сфера находится в таблице отображений, которая хранится в буфере. В противном случае с каждым изменением осуществлялось перерисовка заново всех треугольников (пробовал, действительно тормоза). Итак, таблица отображений содержит статическую картинку, но! ее (конкретную таблицу отображений) можно изменить с помощью функций и методов и переопределения переменной, хранящей уникальный номер таблицы отображений.

Что это дает? Много, очень много. Создаем n таблиц отображений, одна таблица на треугольник. Теперь все треугольники хранятся в буфере как данные. Теперь изменяю несколько таблиц отображений (несколько треугольников), например, чтобы поднять или опустить узел. Остальные данные остаются нетронутыми статическими данными -- следовательно тормозов нет и не будет. Измененные треугольники теперь перезаписываются в свои таблицы отображений. Результат - колоссальная производительность.

Теперь отвечу на ваши вопросы Qt4 как API для OpenGL. Для работы с OpenGL в Qt4 есть три определяемые разработчиком функции:

virtual void initializeGL() // автоматически вызывается первой и только один раз, в ней разработчик делает настройки и инициализации OpenGL

virtual void resizeGL(int nW, int nH) // автоматически вызывается второй и только один раз, нужна, чтобы связать сцену с размером виджета (окна), так же вызывается при изменении размеров окна, в ней так же логично задать матрицу проектирования или проекцию

virtual void paintGL() // вызывается автоматически при вызове команд обновить изображение, вызывается любое количество раз, заменяет старое изображение на новое

Вообщем все предельно логично, интуитивно понятно и просто.