Скайбокс - довольно хороший способ. Для этого вам понадобится карта куба . По сути, вы визуализируете куб вокруг камеры и наносите текстуру на внутреннюю поверхность каждой грани куба. Я полагаю, что OpenGL может включить это в свой конвейер фиксированных функций, но в случае, если вы используете шейдерный подход (в любом случае фиксированная функция устарела), вам следует использовать сэмплеры карты куба (samplerCUBE в Cg, не уверенный в GLSL). При рисовании карты куба вы также хотите удалить перевод из матрицы вида модели, но сохранить вращение (это заставляет скайбокс «следовать» за камерой, но позволяет вам смотреть на разные части неба).
Лучше всего на самом деле нарисовать карту куба после рисования всех непрозрачных объектов. Это может показаться странным, потому что по умолчанию небо будет блокировать другие объекты, но вы избегаете этого, используя следующий прием (если используете шейдеры): при записи конечной позиции вывода в вершинном шейдере вместо записи .xyzw пишите .xyww , Это заставит небо улететь в дальнюю плоскость, что заставит его быть позади всего. Преимущество этого состоит в том, что оверрейд равен 0!