それらの1つ:
- ソース コードを変更することなく、プログラム フレームワークでサポートされている任意の OS でコンパイルできます。(機械語に直接コンパイルされる C++ などの言語)
- プログラムは、インタープリター言語またはプラットフォームに依存しないバイトコードにコンパイルされる言語で記述されており、インタープリターがサポートするプラットフォームであれば、変更なしで実際に実行できます。(Java や Python などの言語)。
- アプリケーションは、オペレーティング システム固有の呼び出しを抽象化するある種のクロスプラットフォーム フレームワークに依存しています。フレームワークがサポートするすべての OS で変更なしで実行できます。
言語タグを追加していないため、言語に応じて #1、#2、または #3 のいずれかになります。
- 編集 -
OS はプロセッサ固有です。
いいえ。Linux を参照してください。同じコード ベースをさまざまなアーキテクチャ用にコンパイルできます。通常、OS カーネルは移植可能な言語 (C など) で書かれており、異なる CPU 用に再構築できます。gentoo のようなディストリビューションでは、ソースから OS 全体を再構築することもできます。
アプリケーション (プログラム/コード/ルーチン/関数/ライブラリ) は OS 固有です。
いいえ、java *.jar ファイルのようなアプリケーションは、多かれ少なかれ OS に依存しないようにすることができます。インタープリターがある限り、どこでも実行できます。OS 固有の部分 (Java の場合の Java ランタイム環境など) がありますが、プログラムはこの部分が存在する場所ならどこでも実行されます。
ソース コードはプレーン テキストです。
必ずしもそうではありませんが、ほとんどの場合はそうです。
コンパイラ (プログラム) は OS 固有ですが、同じ OS を前提として異なるプロセッサ用のソース コードをコンパイルできます。
そうではありません。コンパイラを別の OS 用に再構築できるように、(ある程度) 移植可能なコードを使用して記述することは合理的です。OS A で実行中に、OS B 用のコードをコンパイルすることが (場合によっては) 可能です。Linux では、Windows プラットフォーム用のコードをコンパイルできます。
OpenGL はライブラリです。
そうではない。これは、3D グラフィックスを操作するための一連のプログラミング関数を記述した仕様 (API) です。この仕様を実装するライブラリがあります。仕様自体はライブラリではありません。
したがって、OpenGL は OS/プロセッサ固有でなければなりません。
誤った結論。
どうすれば OS に依存しませんか?
基盤となるプラットフォームが標準準拠の OpenGL 実装を備えている限り、プログラムのレンダリング部分は、標準準拠の OpenGL 実装を備えた他のプラットフォームと同じように機能します。それは携帯性です。もちろん、これは理想的な状況ですが、実際にはドライバーのバグなどに遭遇する可能性があります。