OpenGL 【Open Graphics Library】

概要

OpenGL(Open Graphics Library)とは、ハードウェアの持つ3次元コンピュータグラフィックス(3DCG)関連の演算機能をソフトウェアから呼び出すための規約を定めたインターフェース(API)標準の一つ。もともと旧Silicon Graphics社(SGI)が自社ソフトウェア向けに開発していたIRIS GLをオープン化したもので、業界団体のクロノス・グループ(Khronos Group)が仕様の標準化を行っている。

様々な機種やハードウェア、OSなどに対応した汎用のグラフィックスライブラリで、平面上の2次元グラフィックス(2DCG)、立体的な3次元グラフィックス(3DCG)を描画するための豊富な機能が用意されている。Windows環境上ではOpenGLよりも米マイクロソフト(Microsoft)社のDirectX(の3DCG機能であるDirect3D)がよく利用されるが、他の環境やWindowsを含む複数環境の同時対応などが必要な場合にはOpenGLがよく選択される。

コンピュータのビデオカードなどに専用のグラフィックスチップ(GPU)が搭載されている場合にはその機能を直接呼び出すことができるため、通常のソフトウェアのようにCPUだけで処理する場合に比べ格段に高速に処理することができる。GPU内部の動作を細かく記述することができる独自の言語GLSL(OpenGL Shading Language)を規定しており、開発者が独自のプログラマブルシェーダを作成して対応GPUに転送することで様々な表現を行うことができる。

規格上ではC言語/C++言語から利用するための仕様を定めているが、他のプログラミング言語から利用するための拡張仕様やライブラリなどが提供されている。また、スマートフォンなどの組み込みシステム向けに仕様を簡素化したOpenGL ES(OpenGL for Embedded Systems)や、Webブラウザ上のJavaScriptプログラムから3DCG演算・描画機能を利用するためのWebGLなどの派生規格がある。

OpenGLそのものはハードウェア寄り(低レベル)のAPIであるため、きめ細かな制御やプログラムの作り込みが可能だが、初心者には取っ付きにくく、また、プログラムが煩雑で膨大になりがちなため、ある程度まとまった単位の高レベルの機能を提供するライブラリを経由して利用することが多い。用途や動作環境、言語の違いにより様々なライブラリが提供されている。

OpenGLは結果を画面に表示する前提の設計となっているため、GPUの並列演算機能を画像処理以外の汎用の計算用途に用いるGPGPUGPUコンピューティング)に用いることはできない。その場合はKhronos Groupが策定している姉妹規格とも言うべきOpenCLOpen Computing Language)を用いることが推奨される。

(2018.5.23更新)