PTAMのコードを読もうと思うのだが、一から全部読むのはだるい。
せっかく、いろいろなライブラリをダウンロードしてコンパイルしたのだから、そのライブラリをお勉強するのが先じゃね?ってことで、ライブラリの名称から内容を調べてみた。
GLEW
GLEW: The OpenGL Extension Wrangler Library。クロスプラットフォームで、OpenGL Extensionが簡単に使える模様。すなわち、ベンダーごとの独自の機能とかが簡単に呼び出せる。glutと組み合わせて使う模様。NVIDIAのSDK10にも含まれているとか。
glutInit(), glutCreateWindow(), glewInit()で使えるようになる。
glewGetErrorString(err)でエラー文字列の取得。
"glew"でコード内を検索したところ、glewInit()とglewGetErrorString()しか使ってない模様。PTAMGLWindow2.cc と fltkgl.hのみ。
OpenGLの関数の命名規則
(T.Teranishi:OpenGL/OpenGL ES:extensions より)
gl*() glの基本関数
glu*() gl utility(?)関数
glX*() X Window用関数
wgl*() MS Windows用関数
ARB*() OpenGL ARB( Architecture Review Board) による拡張関数
EXT*() 複数ベンダーによる拡張関数
SGI*() SGIによる拡張
SGIS*() SGIプラットフォームの一部で利用可能
SGIX*() SGIプラットフォームの一部で利用可能だが研究段階で試用目的のもの
HP*(), IBM*(), INTEL*(), APPLE*(), SUN*(), INGR*()(インターグラフ), NV*()(nVidia), 3DFX*(), MESA*(), ATI*(), I3D*()(Intense3D)などのベンダー拡張による関数。
LAPACK
LAPACK — Linear Algebra PACKage。Fortran77で書かれた数値計算用のライブラリ。BLASライブラリ上で書かれている。includeの中を見ると、f2c.hなるものがある。似たようなものに、LINPACKがある。
BLAS
BLAS( Basic Linear Algebra Subprograms)。ベクトルと行列に関する基本線形代数操作を実行するライブラリのスタンダード。さまざまなベンダーから最適化された実装が出ている。
CMU 1394 camera driver
1394 Camera Driver – Main。Carnegie Mellon University, Robotics Instituteで作られた、フリーのIEEE1394カメラドライバ。
"1394"で検索したところ、libcvdで大量に使われている模様。PTAM自身では、VideoSource_Win32_CMU1394.ccで使われている。がVideoSource_Win32_CMU1394.ccはとっぱらって、工学ナビさまご提供、VideoSource_Win32_EWCLIB.ccを使っているので、関係ない。
pthread
POSIX Threads (pthreads) for Win32。いわずとしれた、POSIX Threadのライブラリ。
"pthread"で検索すると、gvars3、libcvdで使われている。
libjpeg
Jpeg for Windows。JPEGイメージの圧縮展開ライブラリ。
libcvdで使われている模様。
fltk
Fast Light Toolkit (FLTK)。クロスプラットフォームのGUIライブラリでOpenGLと相性がいい。
"Fl_"で検索すると、gvars3で使われている模様。
TooN
TooN – 概要 [Savannah]。Tom’s OO Numerics (TooN)。Tom’s object oriented Numerics。University of CambridgeのEngineeringで作られているBLASとLAPACKの機能と、SE(3)とSO(3)の機能をC++のテンプレートライブラリーにしたもの。要するに、MatrixやらVectorのテンプレートライブラリ。libCVDと相性がいい。
"Matix"で検索すると、gvars3、libCVD、PTAMで使われている模様。
libCVD
CVD – 概要 [Savannah]。CVD Projects。University of CambridgeのEngineeringで作られているコンピュータビジョンライブラリ。ffmpegとか書かれてるから、動画もOKみたいね。
"#include <cvd/"で検索すると、PTAMで使われている模様。
gvars3
CVD – 概要 [Savannah]。CVD Projects。configuration system library。libCVDを補助するライブラリ。
PTAMで使われている模様。
EWCLIB
EWCLIB。Easy Web Camera Library。USBカメラをDirectShow経由で画像入力するためのライブラリ。
VideoSource_Win32_EWCLIB.ccで使われている。
ということで、ライブラリの依存関係はこんな感じ。
gvars、libCVD、TooNは出身がPTAMと同じなんで、毛色も同じなんじゃないかな。