Ответ 1
OpenGL не зависит от платформы, а не от платформы. Это всего лишь спецификация интерфейса графической библиотеки. Он не заботится о платформе, на которой она выполняется. Он просто описывает функции, то, что они называются и что они делают.
Конкретные реализации библиотеки OpenGL могут быть кросс-платформенными или могут отсутствовать. Например, Mesa в какой-то степени является кросс-платформой, несмотря на то, что она в основном разработана для Linux. Вам нужно будет найти реализации OpenGL на каждой из платформ, которые вы хотите скомпилировать.
Однако, прежде чем начать использовать интерфейс OpenGL, необходимо выполнить некоторый код. Этот код предназначен для настройки контекста рендеринга OpenGL. Как вы это делаете, зависит от платформы. Например, в Linux GLX является расширением X Window System, которое предоставляет интерфейс для создания контекста рендеринга. Это будет работать только в системах, на которых запущена X Window System. В других системах вам нужно будет сделать что-то другое, чтобы выполнить ту же работу.
Существуют библиотеки кросс-платформен для выполнения этой задачи создания контекста рендеринга для вас. Например, посмотрите GLFW. Это современная альтернатива библиотеке GLUT, но GLUT больше не поддерживается. Вы можете избежать использования определенного кода платформы в своем источнике и предоставить этому заданию библиотеку для управления.
Обратите внимание, что OpenGL предоставляет только графическую библиотеку. Больше ничего. Может быть много других библиотек и интерфейсов, которые использует игра, которые не будут независимы от платформы, такие как вход, звук и т.д. Если ваша игра содержит только чистый С++, а единственная библиотека - OpenGL, то источник может плавно перейти на другую платформу, пока ваш код на С++ не зависит от какого-либо неуказанного поведения. Возможно, вам даже не придется изменять контекст рендеринга, если вы использовали библиотеку, подобную GLFW.
Также стоит упомянуть такие вещи, как SFML и SDL. Эти библиотеки являются кросс-платформенными и обеспечивают интерфейс для всех видов мультимедиа. Они настроят ваш контекст рендеринга OpenGL, создадут для вас окна, рисуют на экране, разбираются с вводом/выводом и звуком и многое другое. Они могут быть ограничены в некоторых отношениях, но они сильны в том, что они очень быстро помогают вам на всех платформах.