Под первым рисованием вы понимаете вызов paintGL()?
Как я понимаю, контекст создаётся прямо перед вызовом initializeGL()
В этой фунции можно пройтись по текстурам, покомпилить шейдеры, заполнить буферы.
Ответ в стиле "КО"
Не выходит. Напр та же загрузка текстур может занимать минуты, нужен индикатор прогресса. Как я буду его показывать из initializeGL? По-хорошему надо сначала все загрузить а потом уж окна открывать.
А ещё, наверное, можно создать общий контекст и в нём уже сделать необходимые манипуляции.
Да, самостоятельно создать контекст можно, но он не шарится с теми что я получаю в initalize/paintGL - поэтому годится только для просмотра extensions