OpenGL

出典: フリー百科事典『ウィキペディア(Wikipedia)』

OpenGL
開発元 シリコングラフィックス
最新版 3.0 / 2008年8月11日
対応OS クロスプラットフォーム
公式サイト http://www.opengl.org/
  

OpenGL(おーぷんじーえる、Open Graphics Library)とは、Silicon Graphics社 (SGI) が中心となって開発した3Dグラフィックスのためのプログラムインターフェイス。2Dグラフィックスも可能である。最新版は、OpenGL 3.0 (2008年8月11日) である。

OpenGLは、SGIをはじめ、HP、SUN、IBM、SONY-NEWSなどのUNIXワークステーションの他、LinuxFreeBSDなどのPC UNIXに加え、WindowsMac OS X等で使用できるクロスプラットフォームのAPIである。また、携帯電話、PDA(携帯情報端末)、家電など組み込み用途向けOpenGLのサブセット版であるOpenGL ESも存在する。

オープン仕様として公開され、幅広い処理系に対応しているため、広く一般に普及している。非常に高速に動作し、高精度な3D画像を描画できる。有償・無償の豊富な補助ライブラリがあるのも特色として挙げられる。

2004年に発表されたOpenGL2.0でシェーディング言語を仕様化するなど、時代に沿った多様な機能を持つようになっている。

目次

[編集] 歴史

元々はSGIが自社ワークステーションで使用していたIRIS GLというシステムを改良し、移植性を高めたものである。 [1]

1992年以降は、OpenGL Architecture Review Board (ARB)により監修される事となる。このARBには、3DlabsAppleATIDell ComputerEvans & SutherlandHewlett-PackardIBMインテルMatroxNVIDIASGISun Microsystems が参加している。2006年9月21日以降からは、100以上の企業で構成される標準化団体クロノス・グループ (The Khronos Group) へ管理が移行し、OpenGL ARB Working Group (OpenGL ARB WG) となった。

オープンな仕様であるため、各種OSに移植または互換GLが作成され、またグラフィックチップベンダーもオープンソースOS用のドライバを用意するなど汎用性に富むライブラリとなっている。ベンダ独自の機能を柔軟に拡張できるため、いち早く最新ボードの3D グラフィックスの最新技術を利用できる反面、OpenGL標準化への対応はやや遅い傾向にある。

[編集] 特徴

OpenGLのグラフィックス処理の図

OpenGLは画面 (フレームバッファ) に描画する事を前提に設計されている。3DCGを描画できると言っても、オフラインレンダラー (POV-Rayなど) のようなレイトレーシング法は標準ではサポートされておらず、ポリゴンなどのプリミティブ形状をリアルタイムに順序をもってラスタライズ (画素化) して合成する事で3DCGを描画する。そのため、形状同士が反映し合うような鏡のような反射、ガラスの屈折、投影、交差した半透明形状などを表現するには特殊なプログラミングが必要になる。

柔軟な画像処理を行うために、奥行き情報を記録してZバッファ法などに利用できる「デプスバッファ」、形状のインデックスを記録してマスク処理などを行える「ステンシルバッファ」、高精度なカラー合成などを行える「蓄積バッファ」など、特殊な画素情報がサポートされている。また、元来OpenGLやGPU内で固定的に処理されてきた頂点データやフラグメント (ラスタライズにより生成される画素) の処理をGPUの強力な処理能力を活かしつつプログラミング可能にするプログラマブルシェーダの登場と、それを制御するシェーディング言語GLSLの採用により、さらに多種多様な表現が可能になった。

また、パーティクル機能を主眼に置いたポイントスプライトをサポートしている。一般的にパーティクルや2次元画像のオブジェクトを3次元空間に合成する場合は、平板なポリゴンにテクスチャを張り、常に視点と平行になるよう調整する「ビルボード」と呼ばれる手法が使われているが、ポイントスプライトを使うことでビルボードに代わり、座標計算やプログラミングのコストを軽減できる。

[編集] 補助・拡張ライブラリ

OpenGLそのものは、ハードウェアに近い低次のライブラリである。そのため、よりソフトウェアに近い、多くの高次の補助・拡張ライブラリが存在する。主に、3D描画機能を簡易化・拡張するもの、ウインドウシステムをサポートするもの、グラフィックス面以外の機能を付加するものに分けられる。

[編集] DirectXとの関係

OpenGLはグラフィックスを専門的に扱うライブラリである。対してDirectXは、ゲーム開発での利用を主な用途としており、グラフィックのみならずサウンドや入力関連のAPIを含んでいる点で性質が異なる。

DirectXは主にWindowsXboxプラットフォームでのゲーム開発等で多く用いられる(Linux上でDirectXを動作させるCedegaなどの例もある)。対してOpenGLはクロスプラットフォームであり、Windows用にも提供されているため、Windows環境でDirectXとOpenGLを両立させる事も可能である。

発祥がワークステーションである事やクロスプラットフォームである事から、CADや工業デザイン、科学技術計算や医療での視覚化等の業務分野では、DirectX等のエンタテインメント用途重視のグラフィックスAPIよりもOpenGLが用いられる事が多い。そのため、ワークステーションや業務向けのGPUビデオカード製品には、OpenGLに最適化された仕様の物が販売される傾向がある。OpenGL向けと称されているGPUにはNVIDIA社の『Quadro』シリーズや、ATI社の『FireGL』シリーズが存在し、デバイスドライバを含めた仕様がOpenGL用に最適化されている。しかしその反面、これらの製品ではDirectXを使用したアプリケーションでの性能が芳しくない傾向もある。コンシューマ向けの安価なビデオカード製品に対し、チップを交換したり、抵抗の位置をずらしたり、BIOSやデバイスドライバをOpenGL向け製品の物と交換する等で、OpenGL向け製品を模す物も一部存在するが、当然そのような改造を行った物はメーカの保証を受けられず、全て自己責任において行うこととなる。

シリコングラフィックス社とマイクロソフト社はかつてOpenGLとDirect3Dの統合を目標として、Fahrenheitと呼ばれる3DグラフィックスAPIの共同開発を1997年に開始したことがあるが、1999年の末までに計画は事実上頓挫している。また、マイクロソフト社はOpenGL ARBの設立時のメンバーでもあったが、2003年に脱退した。

[編集] 関連項目

[編集] 外部リンク

ウィキブックス
ウィキブックスOpenGL関連の教科書や解説書があります。