| 原作者 | シリコングラフィックス |
|---|---|
| 開発者 | クロノスグループ (旧ARB) |
| 初回リリース | 1992年6月30日 |
| 安定リリース | 4.6 [1]
/ 2017年7月31日 |
| 書かれた | C [2] |
| 後継 | ヴルカン |
| タイプ | 3D グラフィックスAPI |
| ライセンス |
|
| Webサイト | オープンGL |
OpenGL(Open Graphics Library [4])は、2Dおよび3Dベクターグラフィックスをレンダリングするためのクロス言語、クロスプラットフォームの アプリケーションプログラミングインターフェイス(API)です。このAPIは通常、グラフィックスプロセッシングユニット(GPU)と対話して、ハードウェアアクセラレーションレンダリングを実現するために使用されます。
Silicon Graphics, Inc. (SGI)は1991年にOpenGLの開発を開始し、1992年6月30日にリリースしました。[5] [6] OpenGLは、コンピュータ支援設計(CAD)、ビデオゲーム、科学的視覚化、仮想現実、フライトシミュレーションなど、さまざまなアプリケーションに使用されています。2006年以来、OpenGLは非営利の技術コンソーシアム Khronos Groupによって管理されています。[7]
デザイン

OpenGL 仕様は、2D および 3D グラフィックスを描画するための抽象的なアプリケーション プログラミング インターフェイス (API)を記述します。この仕様は、主にまたは完全にGPUなどのハードウェア アクセラレーションを使用して実装されるように設計されていますが、 CPU上で実行されるソフトウェアで API を完全に実装することも可能です。
API は、クライアント プログラムによって呼び出される可能性のある関数のセットとして定義され、名前付き整数定数のセット(たとえば、10 進数 3553 に対応する定数 GL_TEXTURE_2D) と一緒に使用されます。関数定義は表面的にはプログラミング言語Cの定義に似ていますが、言語に依存しません。そのため、OpenGL には多くの言語バインディングがあり、その中でも最も注目すべきものとしては、JavaScriptバインディングWebGL ( Web ブラウザー内から 3D レンダリングを行うためのOpenGL ES 2.0に基づく API )、C バインディングWGL、GLX、CGL 、 iOSによって提供される C バインディング、Androidによって提供されるJavaおよび C バインディングがあります。
OpenGL は言語に依存しないだけでなく、クロスプラットフォームでもあります。仕様では OpenGL コンテキストの取得と管理については何も述べられておらず、これは基盤となるウィンドウ システムの詳細として残されています。同じ理由で、OpenGL はレンダリングのみに関係しており、入力、オーディオ、ウィンドウに関連する API は提供していません。
発達
OpenGLは現在は活発に開発されていませんが、2001年から2014年の間、OpenGL仕様はほぼ毎年更新され、2009年には2つのリリース(3.1と3.2)、2010年には3つのリリース(3.3、4.0、4.1)が行われました。最新のOpenGL仕様4.6は、3年間の中断の後、2017年にリリースされ、既存の11のARBおよびEXT拡張機能をコアプロファイルに含めることに限定されていました。[8]
OpenGLの積極的な開発は、2016年にリリースされ、初期の開発期間中はコードネームglNextと呼ばれていたVulkan APIに取って代わられました。2017年に、クロノスグループはOpenGL ESには新しいバージョンがないと発表し[9]、それ以来Vulkanやその他の技術の開発に集中しています。 [ 10] [11]その結果、レイトレーシングなど、最新のGPUが提供する特定の機能はOpenGL標準ではサポートされていません。ただし、ベンダー固有のOpenGL拡張機能を通じて新しい機能のサポートが提供される場合があります。[12] [13]
OpenGL仕様の新しいバージョンはクロノスグループによってリリースされ、それぞれがAPIを拡張してさまざまな新機能をサポートしています。各バージョンの詳細は、グラフィックスカードメーカー、オペレーティングシステム設計者、MozillaやGoogleなどの一般的なテクノロジー企業を含むグループのメンバー間の合意によって決定されます。[14]
コアAPIに必要な機能に加えて、グラフィックス処理装置(GPU)ベンダーは拡張機能の形で追加機能を提供する場合があります。拡張機能は新しい関数や新しい定数を導入し、既存のOpenGL関数の制限を緩和または削除する場合があります。ベンダーは拡張機能を使用して、他のベンダーやクロノスグループ全体からのサポートを必要とせずにカスタムAPIを公開できるため、OpenGLの柔軟性が大幅に向上します。すべての拡張機能はOpenGLレジストリに収集され、定義されます。[15]
各拡張機能には、それを開発した会社の名前に基づいた短い識別子が関連付けられています。たとえば、Nvidiaの識別子は NV で、これは拡張機能名GL_NV_half_float、定数GL_HALF_FLOAT_NV、関数の一部ですglVertex2hNV()。[16]複数のベンダーが同じ API を使用して同じ機能を実装することに同意した場合、識別子 EXT を使用して共有拡張機能がリリースされることがあります。このような場合、Khronos グループのアーキテクチャ レビュー ボードが拡張機能を明示的に承認することもあります。この場合は、識別子 ARB が使用されます。[17]
OpenGL の各新バージョンで導入される機能は、通常、広く実装されている複数の拡張機能、特に ARB または EXT タイプの拡張機能の機能の組み合わせから形成されます。
ドキュメント
OpenGL Architecture Review Board は、API の変更を追跡するために更新された仕様とともに一連のマニュアルをリリースしました。これらは通常、表紙の色で参照されます。
- レッドブック
- OpenGL プログラミング ガイド、第 9版。ISBN 978-0-134-49549-1
- SPIR-V による OpenGL バージョン 4.5 の学習のための公式ガイド
- オレンジブック
- OpenGL シェーディング言語、第 3 版。ISBN 0-321-63763-1
- GLSLのチュートリアルとリファレンスブック。
歴史的な書籍(OpenGL 2.0 以前):
- グリーンブック
- X ウィンドウ システム用 OpenGL プログラミング。ISBN 978-0-201-48359-8
- X11 インターフェイスとOpenGL Utility Toolkit (GLUT)に関する本。
- ブルーブック
- OpenGL リファレンス マニュアル、第 4 版。ISBN 0-321-17383-X
- 基本的には、OpenGL のUnix マニュアル(man) ページのハードコピー プリントアウトです。
- 理想的な OpenGL 実装の構造を示すポスターサイズの折りたたみ式図が含まれています。
- アルファブック(白表紙)
- Windows 95 および Windows NT 用 OpenGL プログラミング。ISBN 0-201-40709-4
- OpenGL と Microsoft Windows のインターフェイスに関する本。
OpenGLのドキュメントは公式ウェブページからもアクセスできます。[18]
関連ライブラリ
OpenGL の最も初期のバージョンは、 OpenGL ユーティリティ ライブラリ(GLU)と呼ばれる付属ライブラリとともにリリースされました。このライブラリは、テッセレーション、ミップマップやプリミティブ シェイプの生成など、当時のハードウェアではサポートされていなかったシンプルで便利な機能を提供しました。GLU 仕様は 1998 年に最後に更新され、現在は非推奨となっている OpenGL 機能に依存しています。
コンテキストとウィンドウのツールキット
OpenGLコンテキストの作成は非常に複雑なプロセスであり、オペレーティングシステムによって異なるため、OpenGLコンテキストの自動作成は、SDL、Allegro、SFML、FLTK、Qtなどのいくつかのゲーム開発ライブラリとユーザーインターフェイスライブラリの一般的な機能になっています。いくつかのライブラリは、OpenGL対応ウィンドウを作成するためだけに設計されています。最初のそのようなライブラリはOpenGL Utility Toolkit (GLUT)で、後にfreeglutに置き換えられました。GLFWはより新しい代替手段です。[19]
- これらのツールキットはOpenGLウィンドウの作成と管理、入力の管理を目的として設計されていますが、それ以上の機能はほとんどありません。[20]
- GLFW – クロスプラットフォームのウィンドウとキーボード、マウス、ジョイスティックのハンドラー。ゲーム指向が強い
- freeglut – クロスプラットフォームのウィンドウおよびキーボードマウスハンドラ。その API は GLUT API のスーパーセットであり、GLUT よりも安定しており、最新です。
- OpenGL ユーティリティ ツールキット(GLUT) – メンテナンスされなくなった古いウィンドウ ハンドラー。
- いくつかの「マルチメディアライブラリ」は、ゲームのようなアプリケーションに役立つ入力、サウンド、その他のタスクに加えて、OpenGLウィンドウを作成できます。
- Allegro 5 – ゲーム開発に特化した C API を備えたクロスプラットフォーム マルチメディア ライブラリ
- Simple DirectMedia Layer (SDL) – C API を備えたクロスプラットフォームのマルチメディア ライブラリ
- SFML – C++ API と、C#、Java、Haskell、Go などの言語への複数のバインディングを備えたクロスプラットフォームのマルチメディア ライブラリ
- ウィジェットツールキット
拡張機能読み込みライブラリ
OpenGL 拡張機能の識別と読み込みには高い作業負荷がかかることから、利用可能なすべての拡張機能と関数を自動的に読み込むライブラリがいくつか設計されています。例としては、OpenGL Easy Extension library (GLEE)、OpenGL Extension Wrangler Library (GLEW)、glbindingなどがあります。拡張機能は、 Java OpenGL、PyOpenGL、WebGLなど、ほとんどの言語バインディングによっても自動的に読み込まれます。
実装

glxinfo。システム上の OpenGL の Mesa 実装の情報を示しています。Mesa 3Dは OpenGL のオープンソース実装です。純粋なソフトウェア レンダリングを実行できるほか、Direct Rendering Infrastructureを利用してBSD、Linux 、その他のプラットフォームでハードウェア アクセラレーションを使用することもできます。バージョン 20.0 では、OpenGL 標準のバージョン 4.6 を実装しています。
歴史
1980 年代には、クロスプラットフォーム ライブラリがなければ、さまざまなグラフィックス ハードウェアで機能するソフトウェアを開発するのは困難でした。ソフトウェア開発者は、ハードウェアごとにカスタム インターフェイスとドライバーを作成しました。これはコストがかかり、労力も倍増しました。
1990年代初頭までに、シリコングラフィックス(SGI)はワークステーション向け3Dグラフィックスのリーダーとなりました。同社のIRIS GL API [21] [22]は、IRIS GLが使いやすいと考えられ、即時モードレンダリングをサポートしていたため、PHIGSなどの競合製品よりも高速であったため、業界標準となりました[ 23 ]。
SGI の競合他社 (サン・マイクロシステムズ、ヒューレット・パッカード、IBMなど) も、PHIGS 標準の拡張機能をサポートする 3D ハードウェアを市場に投入することができ、これにより SGI は IRIS GL のバージョンをOpenGLと呼ばれるパブリック標準としてオープンソース化するよう圧力を受けました。
しかし、SGI には、IRIS GL から OpenGL への変更に多大な投資を必要とする顧客が多数いました。さらに、IRIS GL には 3D グラフィックスとは無関係な API 機能がありました。たとえば、ウィンドウ、キーボード、マウスの API が含まれていましたが、これはX Window Systemや Sun のNeWSより前に開発されたためでもあります。IRIS GL ライブラリも、ライセンスと特許の問題によりオープンには適していませんでした[詳細な説明が必要]。これらの要因により、SGI は、OpenGL の市場サポートが成熟するまで、先進的で独自のIris InventorおよびIris Performerプログラミング API のサポートを継続する必要がありました。
IRIS GL の制約の 1 つは、基盤となるハードウェアでサポートされている機能にしかアクセスできないことです。グラフィックス ハードウェアがネイティブで機能をサポートしていない場合、アプリケーションはその機能を使用できません。OpenGL は、ハードウェアでサポートされていない機能のソフトウェア実装を提供することでこの問題を克服し、アプリケーションが比較的低電力のシステムで高度なグラフィックスを使用できるようにしました。OpenGL は、ハードウェアへのアクセスを標準化し、ハードウェア インターフェイス プログラム (デバイス ドライバー) の開発責任をハードウェア メーカーに押し付け、ウィンドウ機能を基盤となるオペレーティング システムに委任しました。非常に多くの異なる種類のグラフィックス ハードウェアがある中で、このようにしてそれらすべてに同じ言語を話させると、ソフトウェア開発者に 3D ソフトウェア開発用のより高レベルのプラットフォームが提供され、大きな影響がありました。
1992年、[24] SGIはOpenGL Architecture Review Board (OpenGL ARB)の設立を主導しました。これは、将来的にOpenGL仕様の保守と拡張を行う企業グループです。2年後、彼らはまた、シーングラフAPI(おそらく彼らのPerformer技術に基づく)などの要素を含む「 OpenGL++ 」と呼ばれるものをリリースするというアイデアを検討しました。この仕様は、関心のある少数の団体の間で回覧されましたが、製品化されることはありませんでした。[25]
1996年にリリースされたMicrosoftの Direct3Dは、最終的にOpenGLの主な競合相手となった。50人以上のゲーム開発者が、1997年6月12日にリリースされたMicrosoftへの公開書簡に署名し、同社にOpenGLを積極的にサポートするよう求めた。[26] 1997年12月17日、[27] MicrosoftとSGIは、OpenGLとDirect3Dのインターフェースを統合する(そしてシーングラフAPIも追加する)ことを目標とした共同の取り組みであるFahrenheitプロジェクトを開始した。1998年にHewlett-Packardがこのプロジェクトに参加した。 [28]当初はインタラクティブ3DコンピュータグラフィックスAPIの世界に秩序をもたらす可能性を示していたが、SGIの財政的制約、Microsoftの戦略上の理由、そして業界全体のサポート不足により、1999年に中止された。[29]
2006年7月、OpenGLアーキテクチャレビュー委員会は、OpenGL API標準の管理をクロノスグループに移管することを決議した。[30] [31]
業界のサポート
後継の Vulkan や Metal のような新しいグラフィックス API の登場にもかかわらず、OpenGL は広く使用されている標準であり続けています。この継続的な関連性は、新しい拡張機能とドライバーの最適化による継続的な開発、クロスプラットフォームの互換性、ANGLEや Zink などの互換性レイヤーの利用可能性など、いくつかの要因によって支えられています。これらのレイヤーにより、OpenGL は Vulkan と Metal 上で効率的に実行でき、開発者が継続して使用したり段階的に移行したりするための道筋を提供します。[32] [33] [より良いソースが必要]
しかし、グラフィックスAPIの状況は変化しており、一部の企業はOpenGLから離れつつあります。2018年6月、Appleはすべてのプラットフォーム(iOS、macOS、tvOS )でOpenGL APIを非推奨にし、開発者に2014年に導入された独自のMetal APIを使用するよう強く推奨しました。 [34]
ゲーム開発者も新しいAPIを採用し始めている。id Softwareは、1990年代後半からGLQuake [35]やDoomフランチャイズの一部のゲーム[36]などのゲームでOpenGLを使用してきたが、2016年にid Tech 7エンジンで後継のVulkanに移行した。 [37] id Tech 6エンジンのアップデートで初めてVulkanをサポートした。同社が初めてOpenGLをライセンス使用したのは、 id Tech 2としても知られるQuake IIエンジンだった。[38] 2023年3月、ValveはDota 2からOpenGLのサポートを削除し、 Vulkanを採用した。[39] Atypical Gamesは、Samsungの支援を受けて、Apple以外のすべてのプラットフォームでOpenGLではなくVulkanを使用するようにゲームエンジンを更新した。[40]
OpenGLの開発を担当するコンソーシアムであるクロノスグループは、OpenGLのサポートを停止しました。[要出典]レイトレーシング、GPU上のビデオデコード、NVidia DLSS [41]やAMD FSR [42] などのディープラーニングによるアンチエイリアシング アルゴリズムなど、多くの最新のグラフィックステクノロジがサポートされていません。
GoogleのFuchsia OSは、Vulkanをネイティブに使用し、Vulkan準拠のGPUを必要としますが、ANGLE変換レイヤーを介してVulkan上でOpenGLをサポートする予定です。[43]
バージョン履歴
OpenGL の最初のバージョンであるバージョン 1.0 は、1992 年 6 月 30 日に Mark Segal とKurt Akeleyによってリリースされました。それ以来、OpenGL は、新しいバージョンの仕様をリリースすることで、時折拡張されてきました。このようなリリースでは、すべての準拠グラフィック カードがサポートする必要がある機能のベースライン セットが定義され、これに基づいて新しい拡張機能をより簡単に記述できます。OpenGL の新しいバージョンにはそれぞれ、グラフィック カード ベンダーの間で広くサポートされているいくつかの拡張機能が組み込まれる傾向がありますが、これらの拡張機能の詳細は変更される可能性があります。
オープンGL2.0
発売日:2004年9月7日
OpenGL 2.0はもともと、OpenGLが停滞し、明確な方向性を欠いているという懸念に対処するために3Dlabsによって考案されました。 [61] 3Dlabsは標準にいくつかの主要な追加を提案しました。これらのほとんどは、当時ARBによって拒否されたか、3Dlabsが提案した形で実現することはありませんでした。しかし、Cスタイルのシェーディング言語の提案は最終的に完成し、現在のOpenGLシェーディング言語(GLSLまたはGLslang)の定式化につながりました。置き換えていたアセンブリのようなシェーディング言語と同様に、固定機能の頂点パイプとフラグメントパイプをシェーダーに置き換えることができましたが、今回はCのような高級言語で書かれていました。
GLSLの設計は、当時利用可能なハードウェアの限界に比較的ほとんど妥協しなかったことで注目に値します。これは、現在利用可能なハードウェアの状態を単に追跡するのではなく、3Dアクセラレータに対して野心的で将来を見据えた目標を設定するというOpenGLの以前の伝統に立ち返ったものです。最終的なOpenGL 2.0仕様[62]にはGLSLのサポートが含まれています。
Longs Peak と OpenGL 3.0
OpenGL 3.0 がリリースされる前、新しいリビジョンにはLongs Peak というコード名が付けられていました。最初の発表の時点では、Longs Peak は OpenGL の生涯で最初の主要な API リビジョンとして発表されました。これは OpenGL の動作方法の全面的な見直しで構成され、API に根本的な変更を求めていました。
このドラフトでは、オブジェクト管理に変更が導入されました。GL 2.1 オブジェクト モデルは、OpenGL の状態ベースの設計に基づいて構築されました。つまり、オブジェクトを変更したり使用したりするには、オブジェクトを状態システムにバインドしてから、状態を変更するか、バインドされたオブジェクトを使用する関数呼び出しを実行する必要があります。
OpenGL は状態システムを使用しているため、オブジェクトは変更可能でなければなりません。つまり、レンダリング パイプラインがオブジェクトを非同期的に使用している場合でも、オブジェクトの基本構造はいつでも変更できます。テクスチャ オブジェクトは 2D から 3D に再定義できます。これにより、OpenGL 実装では、内部オブジェクト管理にある程度複雑さを追加する必要があります。
Longs Peak API では、オブジェクトの作成はアトミックになり、テンプレートを使用してオブジェクトのプロパティを定義し、1 回の関数呼び出しで作成されます。その後、オブジェクトは複数のスレッドですぐに使用できるようになります。オブジェクトは不変ですが、その内容を変更したり更新したりすることはできます。たとえば、テクスチャのイメージは変更できますが、サイズと形式は変更できません。
下位互換性をサポートするために、古い状態ベースの API は引き続き使用可能ですが、OpenGL の以降のバージョンでは、古い API を介して新しい機能が公開されることはありません。これにより、CAD製品の大部分などの従来のコード ベースは引き続き実行でき、他のソフトウェアは新しい API に対して記述したり、新しい API に移植したりできるようになります。
Longs Peakは当初、OpenGL 3.0という名前で2007年9月に完成する予定でしたが、クロノスグループは10月30日に、仕様を公開する前に解決したいいくつかの問題に遭遇したと発表しました。[63]その結果、仕様は遅れ、クロノスグループは最終的なOpenGL 3.0仕様がリリースされるまでメディアの報道を控えました。
最終的な仕様は、Longs Peak の提案ほど革新的ではありませんでした。すべての即時モードと固定機能 (非シェーダー モード) を削除する代わりに、仕様ではそれらを非推奨の機能として含めました。提案されたオブジェクト モデルは含まれず、将来の改訂に含める予定もありません。その結果、API はほぼ同じままで、いくつかの既存の拡張機能がコア機能に昇格されました。一部の開発者グループでは、この決定がちょっとした騒動を引き起こし、[64]多くの開発者が抗議としてDirectXに切り替えると公言しました。ほとんどの苦情は、Khronos から開発コミュニティへのコミュニケーション不足と、多くの人に好意的に見られていた複数の機能が破棄されたことに集中していました。その他の不満としては、OpenGL 3.0 を使用するために DirectX 10 レベルのハードウェアが必要であること、ジオメトリ シェーダーとインスタンス レンダリングがコア機能として存在しないことなどが挙げられます。
他の情報源によると、コミュニティの反応は当初提示されたほど厳しくなく、[65]多くのベンダーがアップデートを支持していると報告されています。[66] [67]
オープンGL3.0
発売日:2008年8月11日
OpenGL 3.0 では、API の将来の改訂を簡素化するために非推奨メカニズムが導入されました。非推奨としてマークされた特定の機能は、ウィンドウ システムから前方互換性のあるコンテキストを要求することによって完全に無効にすることができます。 ただし、完全なコンテキストを要求することによって、これらの非推奨機能と並行して OpenGL 3.0 機能にアクセスできます。
非推奨の機能は次のとおりです:
- すべての固定機能頂点およびフラグメント処理
- glBegin と glEnd を使用したダイレクト モード レンダリング
- 表示リスト
- インデックスカラーレンダリングターゲット
- OpenGL シェーディング言語バージョン 1.10 および 1.20
オープンGL3.1
発売日:2009年3月24日
OpenGL 3.1 では、ワイド ラインを除いて、バージョン 3.0 で非推奨となったすべての機能が完全に削除されました。このバージョン以降、フル コンテキストを使用して新しい機能にアクセスしたり、前方互換コンテキストを使用して非推奨の機能にアクセスしたりすることはできません。実装が ARB_compatibility 拡張をサポートしている場合は前者のルールの例外が作成されますが、これは保証されません。
ハードウェア サポート: Mesa はバージョン 21.0 で ARM Panfrost をサポートします。
オープンGL3.2
発売日:2009年8月3日
OpenGL 3.2 では、OpenGL 3.0 で導入された非推奨メカニズムをさらに強化し、仕様をコア プロファイルと互換性プロファイルに分割しました。互換性コンテキストには、OpenGL 3.1 と同時にリリースされた ARB_compatibility 拡張機能に相当する、以前削除された固定機能 API が含まれますが、コア コンテキストには含まれません。OpenGL 3.2 には、GLSL バージョン 1.50 へのアップグレードも含まれています。
オープンGL3.3
発売日: 2010年3月11日
Mesa は、ソフトウェア ドライバー SWR、ソフトパイプ、および NV50 を搭載した古い Nvidia カードをサポートしています。
オープンGL4.0
発売日:2010年3月11日
OpenGL 4.0 はバージョン 3.3 と同時にリリースされました。Direct3D 11 をサポートできるハードウェア向けに設計されました。
OpenGL 3.0 と同様に、このバージョンの OpenGL には、Direct3D 11 クラスのハードウェアの能力を徹底的に明らかにするために設計された、かなり重要でない拡張機能が多数含まれています。最も影響力のある拡張機能のみを以下にリストします。
ハードウェアサポート: Nvidia GeForce 400シリーズ以降、AMD Radeon HD 5000シリーズ以降(一部のTeraScale GPUでエミュレーションによって実装されたFP64シェーダ)、 Intel Ivy BridgeプロセッサのIntel HDグラフィックス以降。[68]
オープンGL4.1
発売日:2010年7月26日
ハードウェアサポート: Nvidia GeForce 400シリーズ以降、AMD Radeon HD 5000シリーズ以降(一部のTeraScale GPUでエミュレーションによって実装されたFP64シェーダ)、 Intel Ivy BridgeプロセッサのIntel HDグラフィックス以降。[68]
- この仕様を実装するGPUの場合、最小の「最大テクスチャサイズ」は16,384×16,384です。[69]
オープンGL4.2
発売日: 2011年8月8日[55]
- アトミック カウンターとテクスチャの 1 レベルに対するロード、ストア、アトミック読み取り、変更、書き込み操作を備えたシェーダーのサポート
- GPU 頂点処理 (テッセレーションを含む) からキャプチャされたデータの複数のインスタンスを描画し、複雑なオブジェクトを効率的に再配置および複製できるようにします。
- 圧縮テクスチャの任意のサブセットを変更するためのサポート。テクスチャ全体をGPUに再ダウンロードする必要がなく、パフォーマンスが大幅に向上します。
ハードウェアサポート: Nvidia GeForce 400シリーズ以降、AMD Radeon HD 5000シリーズ以降(一部のTeraScale GPUでエミュレーションにより実装されたFP64シェーダ)、 Intel Haswellプロセッサ以降のIntel HDグラフィックス。 [68] (Linux Mesa: Ivy Bridge以降)
オープンGL4.3
発売日: 2012年8月6日[56]
- グラフィックスパイプラインのコンテキスト内でGPU並列処理を活用するコンピュートシェーダー
- シェーダー ストレージ バッファー オブジェクト。これにより、シェーダーは 4.2 からイメージのロード/ストアのようにバッファー オブジェクトの読み取りと書き込みを、関数呼び出しではなく言語を通じて実行できるようになります。
- 画像フォーマットパラメータクエリ
- ETC2/EACテクスチャ圧縮を標準機能として搭載
- OpenGL ES 3.0 APIとの完全な互換性
- アプリケーション開発中にデバッグメッセージを受信するデバッグ機能
- データの複製なしでさまざまな方法でテクスチャを解釈するテクスチャビュー
- メモリセキュリティとマルチアプリケーションの堅牢性の向上
ハードウェアサポート: AMD Radeon HD 5000シリーズ以降(一部のTeraScale GPUでエミュレーションによって実装されたFP64シェーダー)、Intel Haswellプロセッサ以降のIntel HDグラフィックス。 [68] (Linux Mesa: ステンシルテクスチャリングなしのIvy Bridge、Haswell以降)、Nvidia GeForce 400シリーズ以降。仮想マシンのVIRGLエミュレーションは、Mesa 20で4.3以降をサポートします。
オープンGL4.4
発売日: 2013年7月22日[58]
- 強制バッファオブジェクト使用制御
- バッファオブジェクトへの非同期クエリ
- シェーダー内のインターフェース変数のレイアウト制御の表現
- 複数のオブジェクトを同時に効率的にバインド
ハードウェアサポート: AMD Radeon HD 5000シリーズ以降(一部のTeraScale GPUでエミュレーションによって実装されたFP64シェーダ)、 Intel Broadwellプロセッサ以降のIntel HDグラフィックス(Linux Mesa: Haswell以降)、[70] Nvidia GeForce 400シリーズ以降、[71] Tegra K1。
オープンGL4.5
発売日: 2014年8月11日[15] [59]
- ダイレクトステートアクセス(DSA) - オブジェクトアクセサは、オブジェクトをコンテキストにバインドせずに状態を照会および変更することを可能にし、アプリケーションとミドルウェアの効率と柔軟性を向上させます。[72]
- フラッシュ制御 - アプリケーションはコンテキスト切り替えの前に保留中のコマンドのフラッシュを制御できるため、高性能なマルチスレッド アプリケーションが可能になります。
- 堅牢性 - GPU リセットが他の実行中のアプリケーションに影響を与えるのを防ぐなど、WebGL ブラウザなどのアプリケーションに安全なプラットフォームを提供します。
- OpenGL ES 3.1 API およびシェーダー互換性 - デスクトップ システム上で最新の OpenGL ES アプリケーションを簡単に開発および実行できるようにします。
ハードウェアサポート: AMD Radeon HD 5000シリーズ以降(一部のTeraScale GPUではエミュレーションによりFP64シェーダが実装されている)、 Intel Broadwellプロセッサ以降のIntel HDグラフィックス(Linux Mesa: Haswell以降)、Nvidia GeForce 400シリーズ以降、[71] Tegra K1、Tegra X1。[73] [74]
オープンGL4.6
発売日: 2017年7月31日[15] [8] [60]
- より効率的な、GPU によるジオメトリ処理
- より効率的なシェーダー実行 ( AZDO )
- 統計、オーバーフロークエリ、カウンターによる詳細情報
- エラー処理コンテキストがないためパフォーマンスが向上
- ポリゴンオフセット関数のクランプにより、影のレンダリングの問題を解決します。
- SPIR-Vシェーダー
- 異方性フィルタリングの改善
ハードウェアサポート: AMD Radeon HD 7000シリーズ以降(一部のTeraScale GPUでエミュレーションによって実装されたFP64シェーダー)、Intel Haswell以降、Nvidia GeForce 400シリーズ以降。[71]
ドライバーサポート:
- Linux上のMesa 19.2は、Intel Broadwell以降のOpenGL 4.6をサポートしています。[75] Mesa 20.0はAMD Radeon GPUをサポートしていますが、[76] Nvidia Kepler+のサポートは進行中です。21.1のエミュレーションドライバーとしてのZinkとソフトウェアドライバーLLVMpipeもMesa 21.0でサポートされています。
- AMD Adrenalin 18.4.1 グラフィックス ドライバー ( Windows 7 SP1、10バージョン1803、2018 年 4 月更新)、AMD Radeon HD 7700+、HD 8500+ 以降用。2018 年 4 月リリース。[77] [78]
- Windows 10用のIntel 26.20.100.6861グラフィックドライバー。2019年5月にリリース。[79] [80]
- NVIDIA GeForce 397.31 グラフィックス ドライバー ( Windows 7、8、10 x86-64ビットのみ、32 ビットはサポートされていません) 。2018年 4 月リリース[ 81]
代替実装
AppleはiOS 12とmacOS 10.14 MojaveでOpenGLを非推奨にし、 Metalを採用したが、macOS 14 Sonoma( Apple Siliconデバイスを含む)では引き続き利用可能である。[82] OpenGLでサポートされている最新バージョンは2011年の4.1である。[83] [84] Molten( MoltenVKの作者)の独自ライブラリMoltenGLは、OpenGL呼び出しをMetalに変換できる。[85]
Vulkan上にOpenGLを実装しようとするプロジェクトはいくつかある。GoogleのANGLEのVulkanバックエンドは、2020年7月にOpenGL ES 3.1準拠を達成した。[86] Mesa3Dプロジェクトにも、 Zinkと呼ばれるそのようなドライバーが含まれている。[87]
マイクロソフトのArm版Windows 11では、 Mesa Gallium経由でDirectX 12上にオープンソースのOpenGL実装であるGLon12を介してOpenGL 3.3のサポートが追加されました。[88] [89] [90]
ヴルカン
Vulkanは、以前は「次世代OpenGLイニシアチブ」(glNext)と呼ばれていましたが、[91] [92] 、 OpenGLとOpenGL ESを1つの共通APIに統合するための根本的な再設計の取り組みであり、既存のOpenGLバージョンとの下位互換性はありません。[93] [94] [95]
Vulkan API の最初のバージョンは 2016 年 2 月 16 日にリリースされました。
参照
- ARB アセンブリ言語– OpenGL のレガシー低レベルシェーディング言語
- Direct3D – OpenGLの主な競合相手
- Glide (API) – かつて 3dfx Voodoo カードで使用されていたグラフィック API
- Metal (API) – iOS、macOS、tvOS、watchOS 用のグラフィック API
- OpenAL – OpenGLに似せて設計されたクロスプラットフォームのオーディオライブラリ
- OpenGL ES – 組み込みシステム向け OpenGL
- OpenSL ES – クロノス グループが開発した組み込みシステム用オーディオ API
- OpenVG – Khronos Group が開発した、高速 2D グラフィックスの API
- RenderMan インターフェース仕様(RISpec) – フォトリアリスティックなオフライン レンダリングのための Pixar のオープン API
- VOGL – OpenGL 用デバッガー
- Vulkan – 低オーバーヘッド、クロスプラットフォームの 2D および 3D グラフィック API、「次世代 OpenGL イニシアチブ」
- グラフィックスパイプライン
- ウェブGL
- ウェブGPU
注記
- ^ オプション、OpenGL 4.3 でコア化されました
参考文献
- ^ 「Khronos、SPIR-V をサポートする OpenGL 4.6 をリリース」
- ^ Lextrait, Vincent (2010 年 1 月). 「The Programming Languages Beacon, v10.0」。2012 年 5 月 30 日時点のオリジナルよりアーカイブ。2010 年3 月 14 日閲覧。
- ^ 「製品: ソフトウェア: OpenGL: ライセンスとロゴ」。SGI。2012年11月1日時点のオリジナルよりアーカイブ。2012年11月7日閲覧。
- ^ 「OpenGL グラフィックス システム: 仕様」(PDF) . 4.0 (コア プロファイル). 2010 年 3 月 11 日。
- ^ 「SGI – OpenGL の概要」。2004 年 10 月 31 日時点のオリジナルよりアーカイブ。2007 年2 月 16 日閲覧。
- ^ Peddie, Jon (2012年7月). 「Who's the Fairest of Them All?」. Computer Graphics World . 2018年5月30日閲覧。
- ^ 「OpenGL ARB、OpenGL仕様の管理をKhronos Groupに引き渡す」。Khronos Group。2006年7月31日。 2021年3月18日閲覧。
- ^ abc 「Khronos、SPIR-Vサポート付きOpenGL 4.6をリリース」。The Khronos Group Inc. 2017年7月31日。 2017年7月31日閲覧。
- ^ 「OpenGLの将来(フォーラムディスカッション)」。Khronos Group。2020年。
- ^ “クロノス ニュース アーカイブ”.クロノスグループ。 2022 年 11 月 28 日。
- ^ “クロノスブログ”.クロノスグループ。 2022 年 11 月 28 日。
- ^ 「GLSL_NV_ray_tracing」。GitHub。
- ^ 「GL_NV_mesh_shader」。GitHub。
- ^ 「Khronos メンバーシップの概要と FAQ」。Khronos.org。2012年11 月 7 日閲覧。
- ^ abcd 「Khronos OpenGL Registry」。Khronos Group 。 2017年7月31日閲覧。
- ^ "NV_half_float". OpenGL レジストリ. Khronos グループ.
- ^ 「Khronos API 拡張機能の作成方法」。Khronos Group。2017年7 月 31 日閲覧。
- ^ 「OpenGL - 高性能グラフィックスの業界基盤」。The Khronos Group。2011年7月19日。 2021年3月18日閲覧。
- ^ 「GLUT の代替リスト (保守)」 Khronos Group . 2013 年5 月 2 日閲覧。
- ^ 「関連ツールキットと API」www.opengl.org . OpenGL . 2014 年10 月 8 日閲覧。
- ^ 「IRIS GL、SGIの所有物」。
- ^ Kilgard, Mark (2008). 「OpenGL の歴史: IRIS GL (スライド)」www.slideshare.net .
- ^ 「序文: OpenGL とは何か?」OpenGLBook . 2024 年12 月 31 日閲覧。
- ^ 「OpenGL ARB の作成」。2007 年 2 月 22 日時点のオリジナルよりアーカイブ。2007 年2 月 16 日閲覧。
- ^ 「OpenGL++ の終了」。Khronos グループ。
- ^ 「トップ ゲーム開発者が Microsoft に OpenGL の積極的なサポートを要請」。Next Generation。第 32 号。Imagine Media。1997年 8 月。17 ページ。
- ^ 「Fahrenheit の発表」。2007年9月27日時点のオリジナルよりアーカイブ。
- ^ 「Members of Fahrenheit. 1998」。Computergram International。1998年。2007年10月5日時点のオリジナルよりアーカイブ。
- ^ 「華氏の終焉」The Register。
- ^ 「OpenGL ARB が OpenGL 仕様の管理を Khronos Group に引き渡す」 Khronos プレスリリース 2006 年 7 月 31 日。
- ^ 「OpenGL ARB、OpenGL仕様の管理をKhronos Groupに引き渡す」。AccessMyLibraryアーカイブ。
- ^ 「OpenGL が 30 周年を祝う」www.phoronix.com . 2024 年12 月 7 日閲覧。
- ^ 「OpenGLは死んでいない、Vulkan万歳」The Accidental Astronomer 2023年4月9日2024年12月7日閲覧。
- ^ Smith, Ryan (2018 年 6 月 5 日)。「Apple がすべての OS で OpenGL を廃止、開発者に Metal の使用を推奨」www.anandtech.com。購入。2018 年6 月 5 日閲覧。
- ^ 「GLQuake」。Quake Wiki。
- ^ eTeknix.com (2016年7月29日). 「Doom OpenGL VS Vulkan Graphics Performance Analysis」. eTeknix . 2024年12月7日閲覧。
- ^ 「Doom Wiki: id Tech 7」。2021年10月26日閲覧。
- ^ 「Technology Licensing: id Tech 2」。2009年11月8日時点のオリジナルよりアーカイブ。2008年9月17日閲覧。
- ^ Dawe, Liam (2023年3月7日). 「Dota 2がOpenGLサポートを削除、新ヒーローMuertaがライブ配信、4月に大型アップデート予定」GamingOnLinux . 2023年3月26日閲覧。
- ^ 「ジェット セット バルカン : バルカンへの移行を振り返る」.
- ^ 「NVIDIA DLSS SDK」。https ://github.com/NVIDIA/DLSS。
{{cite web}}:外部リンク(ヘルプ)|website= - ^ 「AMD FidelityFX-SDK」。https ://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK。
{{cite web}}:外部リンク(ヘルプ)|website= - ^ 「Magma: 概要」. fuchsia.dev . 2023年3月26日閲覧。
- ^ Kilgard, Mark J. (2001). X Window System 用 OpenGL プログラミング。グラフィックス プログラミング (6. 印刷版)。マサチューセッツ州ボストン。ミュンヘン: Addison-Wesley。p. 6。ISBN 978-0-201-48359-8。
- ^ 「OpenGL グラフィックス システム: 仕様」(PDF) . 1.1. 1997 年 3 月 4 日。
- ^ Astle, Dave (2003 年 4 月 1 日)。「Moving Beyond OpenGL 1.1 for Windows」。gamedev.net。2007年11月 15 日閲覧。
- ^ イソルナ、JM (2015)。材料の視覚的シミュレーション: テオリア、テクニカ、分析。 UPCグラウ。 Arquitectura、urbanisme i edificació (スペイン語)。カタルーニャ工科大学。 p. 191.ISBN 978-84-9880-564-2. 2019年8月21日閲覧。
- ^ abc 「OpenGL グラフィックス システム: 仕様」(PDF) 2.1. 2006 年 12 月 1 日。
- ^ 「ポイントプリミティブ」。
- ^ 「OpenGL グラフィックス システム: 仕様」(PDF) 3.0。2008 年 9 月 23 日。
- ^ 「OpenGL グラフィックス システム: 仕様」(PDF) 3.1。2009 年 5 月 28 日。
- ^ 「OpenGL グラフィックス システム: 仕様」(PDF) . 3.2 (コア プロファイル). 2009 年 12 月 7 日。
- ^ 「Khronos が OpenGL 4.0 で最先端のクロスプラットフォーム グラフィックス アクセラレーションを実現」2010 年 3 月 11 日。
- ^ 「Khronos、OpenGL 4.1 仕様のリリースによりクロスプラットフォーム 3D グラフィックスの進化を推進」2010 年 7 月 26 日。
- ^ ab 「Khronos、OpenGL 4.2仕様のリリースでクロスプラットフォーム3Dグラフィックスを強化」2011年8月8日。
- ^ ab 「Khronos が大幅な機能強化を加えた OpenGL 4.3 仕様をリリース」2012 年 8 月 6 日。
- ^ 「Khronos が大幅な機能強化を加えた OpenGL 4.3 仕様をリリース」2012 年 8 月 6 日。
- ^ abc 「Khronos、OpenGL 4.4仕様を発表」2013年7月22日。
- ^ ab 「Khronos Group、OpenGLエコシステムにおける重要な進歩を発表 – Khronos Groupプレスリリース」。The Khronos Group Inc. 2014年8月10日。 2015年4月17日閲覧。
- ^ ab Kessenich, John; Baldwin, Dave. 「OpenGL Shading Language、バージョン 4.60.7」。The Khronos Group Inc. 2019 年8 月 21 日閲覧。
- ^ Abi-Chahla, Fedy (2008 年 9 月 16 日). 「OpenGL 3 (3DLabs と OpenGL の進化)」. Tom's Hardware . 2010 年10 月 24 日閲覧。
- ^ 「OpenGL グラフィックス システム: 仕様」(PDF) 2.0。2004 年 10 月 22 日。
- ^ 「OpenGL ARB が OpenGL 3.0 のアップデートを発表」 2007 年 10 月 30 日。2007 年 11 月 7 日時点のオリジナルよりアーカイブ。2007年10 月 31 日閲覧。
- ^ 「OpenGL 3.0 リリース、開発者は激怒 – Slashdot」。Tech.slashdot.org。2008 年 8 月 11 日。2012年11 月 7 日閲覧。
- ^ 「OpenGL BOF は問題なく完了し、ピッチフォークは見られませんでした」。
- ^ 「高性能グラフィックスの業界標準」。OpenGL。2008年8月18日。 2017年7月31日閲覧。
- ^ 「NVIDIA が早期 OpenGL 3.0 ドライバーを提供開始」
- ^ abcd 「Intel Iris and HD Graphics Driver for Windows 7/8/8.1 64bit」。Intelダウンロードセンター。2015年4月2日時点のオリジナルよりアーカイブ。
- ^ 「予想される最大テクスチャ サイズ - グラフィックスおよび GPU プログラミング」。GameDev.net。
- ^ 「Intel Skylake-S CPU と 100 シリーズ チップセットの詳細がリークで明らかに」NDTV Gadgets 2015 年 4 月 17 日。
- ^ abc Larabel、Michael (2017 年 7 月 31 日)。「NVIDIA が OpenGL 4.6 をサポートする 381.26.11 Linux ドライバーをリリース」。Phoronix。
- ^ 「OpenGL 4.5 がリリースされました - Direct3D の最高の機能の 1 つを搭載」Ars Technica 2014 年 8 月 11 日2015 年4 月 17 日閲覧。
- ^ 「SG4121: NVIDIA GPU 向け OpenGL アップデート」。Ustream。2015年 5 月 17 日時点のオリジナルよりアーカイブ。2015 年4 月 17 日閲覧。
- ^ Kilgard, Mark (2014 年 8 月 12 日)。「NVIDIA GPU 向け OpenGL 4.5 アップデート」。2015 年4 月 17 日閲覧。
- ^ Larabel, Michael (2019 年 8 月 21 日). 「Intel の OpenGL Linux ドライバーが Mesa 19.2 で OpenGL 4.6 をサポート」. Phoronix .
- ^ Larabel, Michael (2019 年 11 月 27 日). 「AMD の RadeonSI ドライバーがついに OpenGL 4.6 に対応」. Phoronix .
- ^ 「AMD Adrenalin 18.4.1 グラフィックス ドライバーがリリースされました (OpenGL 4.6、Vulkan 1.1.70) – Geeks3D」。www.geeks3d.com。2018 年 5 月。2018 年5 月 10 日閲覧。
- ^ 「Radeon Software Adrenalin Edition 18.4.1 リリースノート」。support.amd.com 。2018年5月10日閲覧。
- ^ 「Intel グラフィックス ドライバー 25.20.100.6861 リリース (OpenGL 4.6 + Vulkan 1.1.103) | Geeks3D」。2019 年 5 月 16 日。2019 年5 月 16 日閲覧。
- ^ 「Windows 10 DCH ドライバー」。Intelダウンロードセンター。2019年8 月 21 日閲覧。
- ^ 「NVIDIA GeForce 397.31 グラフィックス ドライバーがリリースされました (OpenGL 4.6、Vulkan 1.1、RTX、CUDA 9.2) – Geeks3D」。www.geeks3d.com。2018 年 4 月 25 日。2018年5 月 10 日閲覧。
- ^ 「Apple 開発者向けドキュメント」。developer.apple.com。
- ^ Cunningham, Andrew (2019年10月7日). 「macOS 10.15 Catalina: Ars Technicaレビュー」. Ars Technica .
- ^ Axon, Samuel (2018年6月6日). 「OpenGLサポートの終了、およびAppleが基調講演で発表しなかったその他のアップデート」Ars Technica . 2020年10月19日閲覧。
- ^ 「iOS と macOS 上の Vulkan と高速 OpenGL ES」Molten . 2020 年10 月 19 日閲覧。
- ^ ANGLEプロジェクト著者(2020年10月14日)。「google/angle: Windows、Mac、Linux、iOS、Android向けの準拠したOpenGL ES実装」。GitHub 。 2020年12月17日閲覧。
- ^ 「Zink」。Mesa 3D グラフィックス ライブラリの最新ドキュメント。
- ^ 「Arm64 上の Windows の状態: 高レベルの視点」。Chips and Cheese . 2022 年 3 月 13 日。2023 年10 月 23 日閲覧。
- ^ 「DirectX での OpenCL と OpenGL の紹介」。Collabora | オープンソースコンサルティング。2023年10 月 23 日閲覧。
- ^ 「DirectX レイヤー上の OpenGL の詳細」Collabora | オープンソースコンサルティング。2023年10 月 23 日閲覧。
- ^ Dingman, Hayden (2015 年 3 月 3 日)。「DirectX 12 を狙う、プラットフォームに依存しない強力なゲーム技術 Vulkan をご紹介します」。PC World。2015年3 月 3 日閲覧。
- ^ Bright, Peter (2015 年 3 月 3 日)。「Khronos が Vulkan を発表: 最新システム向けに構築された OpenGL」。Ars Technica。2015年3 月 3 日閲覧。
- ^ 「Khronos、次世代OpenGLイニシアチブを発表」 AnandTech 2014年8月20日閲覧。
- ^ 「OpenGL 4.5 リリース、次世代 OpenGL 発表: クロスプラットフォームの Mantle キラー、DX12 の競合」 。2014年8 月 20 日閲覧。
- ^ 「Khronos が OpenGL-Next に関するスライドを公開」。Phoronix。2014年8 月 22 日閲覧。
さらに読む
- Shreiner, Dave; Sellers, Graham; 他 (2013 年 3 月 30 日)。OpenGLプログラミング ガイド: OpenGL を学ぶための公式ガイド。バージョン 4.3 (第 8 版)。Addison- Wesley。ISBN 978-0-321-77303-6。
- Sellers, Graham; Wright, Richard S.; Haemel, Nicholas (2013 年 7 月 31 日)。OpenGL SuperBible: 包括的なチュートリアルとリファレンス(第 6 版)。Addison- Wesley。ISBN 978-0-321-90294-8。
- Rost, Randi J. (2009 年 7 月 30 日)。OpenGLシェーディング言語(第 3 版)。Addison- Wesley。ISBN 978-0-321-63763-5。
- Lengyel, Eric (2003)。OpenGL 拡張ガイド。Charles River Media。ISBN 1-58450-294-0。
- OpenGL アーキテクチャ レビュー ボード、Shreiner、Dave (2004)。OpenGLリファレンス マニュアル: OpenGL の公式リファレンス ドキュメント。バージョン 1.4。Addison- Wesley。ISBN 0-321-17383-X。
- OpenGL アーキテクチャ レビュー ボード、Shreiner、Dave、他 (2006)。OpenGLプログラミング ガイド: OpenGL を学ぶための公式ガイド。バージョン 2 (第 5 版)。Addison- Wesley。ISBN 0-321-33573-2。
外部リンク
- 公式サイト
- OpenGL の概要と OpenGL.org の Wiki には、OpenGL 言語バインディングに関する詳細情報が記載されています。
- SGI の OpenGL ウェブサイト
- クロノスグループ株式会社
