OpenGL周りについての知識をまとめる。
間違っているところもあると思うが、とりあえず現状の認識を
指摘や新たに分かった事があれば随時反映。
1. OpenGL とは
- Open Graphics Library
- グラフィックライブラリで、ハードウェアに近いレベルの機能を提供する
- マルチプラットフォーム対応で様々なOS上で動く
- 3Dのプログラムを書こうと思った時に、まずこれか DirectX が候補にあがるぐいらい代表的なもの
[補足] API, ライブラリ, フレームワークについて
それぞれ自身のコードにリンクできる便利な外部機能群の事だが、それぞれ微妙に意味が異なるらしい。
- API ... Application Programming Interface。便利機能を呼び出す際のプログラム的な仕様。
文章でもいいし、実際のプログラムでもいいみたい
- ライブラリ ... 実装されたAPI
- フレームワーク ... ライブラリの中でもプログラムの土台部分を提供するもの
2. OpenGL を使うには
OpenGL自体はハードウェアに近いレベルの機能を提供するライブラリであるそうで、OS上にウィンドウを出すなどの機能は提供されていない。なので、実際にアプリを作る際は、下記の拡張ライブラリから使うのが一般的らしい。(それぞれマルチプラットフォーム対応で、言語はC/C++)
-
GLUT
- OpenGL Utility Toolkit
- OpenGLを使うのに便利なツールキット(GUI機能)を提供する
- だいぶ前から更新停止
-
- gultを強化したもの
- 最終releaseは、2015/03
- ツールキット部分は、コールバック関数を多用するのが特徴
-
GLFW (zlib/libpng)
- freeglutに変わる新しいOpenGLフレームワーク
- ツールキット部分は、普通の上から下に流れるプログラムで書ける
他にも OpenGL を使う上で便利なライブラリがある。
-
GLEW (修正BSD, MIT)
- OpenGL3.xや4.xの機能を使いやすく提供してくれるライブラリ
- OpenGLを使う時には必須レベルのものらしい