OpenGLは、クロスプラットフォームではなく、プラットフォームに依存しません。これは、グラフィックライブラリのインターフェイスの仕様にすぎません。実装されているプラットフォームには関係ありません。関数、それらが何と呼ばれるか、そしてそれらが何をするかを説明するだけです。
OpenGLライブラリの特定の実装は、クロスプラットフォームである場合とそうでない場合があります。たとえば、Mesaは主にLinux用に開発されていますが、ある程度はクロスプラットフォームです。コンパイルする各プラットフォームでOpenGLの実装を見つける必要があります。
ただし、 OpenGLインターフェイスの使用を開始する前に実行する必要のあるコードがいくつかあります。このコードは、OpenGLレンダリングコンテキストを設定するためのものです。それをどのように行うかは、プラットフォームによって異なります。たとえば、Linuxでは、GLXはX Window Systemの拡張機能であり、レンダリングコンテキストを作成するためのインターフェイスを提供します。これは、XWindowSystemを実行しているシステムでのみ機能します。他のシステムでは、同じ仕事をするために別のことをしなければなりません。
レンダリングコンテキストを作成するこのジョブを実行するためのクロスプラットフォームライブラリがあります。たとえば、GLFWを見てください。これはGLUTと呼ばれるライブラリの最新の代替手段ですが、GLUTはもはや維持されていません。ソースにプラットフォーム固有のコードが含まれるのを避け、そのジョブをライブラリに渡して管理することができます。
OpenGLはグラフィックライブラリのみを提供することに注意してください。これ以上何もない。入力やサウンドなど、プラットフォームに依存しない、ゲームが使用する他の多くのライブラリやインターフェイスが存在する可能性があります。ゲームに純粋なC ++のみが含まれ、ライブラリがOpenGLのみの場合、ソースは別のプラットフォームに非常にスムーズに移植できます。 、C++コードが不特定の動作に依存しない限り。GLFWのようなライブラリを使用した場合は、設定されたレンダリングコンテキストを変更する必要さえないかもしれません。
SFMLやSDLなどについても言及する価値があります。これらのライブラリはクロスプラットフォームであり、あらゆる種類のマルチメディア用のインターフェイスを提供します。彼らはあなたのOpenGLレンダリングコンテキストを設定し、あなたのためにウィンドウを作成し、画面に描画し、I/Oとサウンドを処理します。それらはいくつかの点で制限される可能性がありますが、すべてのプラットフォームで非常に迅速に優れた位置に到達できるという点で強力です。