Во-первых: не применяйте проекцию в обработчике изменения формы. В противном случае простые вещи кажутся невозможными (например, делать скайбокс). Второе: чтобы скайбокс работал, вы должны использовать ту же проекцию, что и для рендеринга остальной части сцены. Вам следует изменить перевод модели на 0, сохраняя ориентацию камеры.
Это можно сделать, установив последний столбец матрицы вида модели в (0,0,0,1).
Итак, ваш код рендеринга выглядит так:
void render_skybox()
{
push_modelview();
set_modelview_column(3, 0, 0, 1);
draw_skybox();
pop_modelview();
}
void render()
{
set_viewport();
set_projection();
apply_camera_transform();
render_skybox();
render_scene();
}