きままにものづくり

日々の気付いたことなんかを書いてます。

OpenGLの勉強 ~OpenGLとは~

こんばんは、even_ekoです。

昨日からhtml5とjsを離れ、ネイティブでの開発に変更になりました。ちなみにOpenGLを使います。以前、OpenCVで画像処理の研究をしていました。そのつながりで、OpenGLの大枠ぐらいは知っていたのですが、詳しいところまでは分かりません...

ちなみに、やりたいことは3Dグラフィックスじゃないです。なので、そんな詳しく知らなくても大丈夫と少し調子に乗ってました。いや結構乗ってたかもしれないです。

ピクセルをいじれる段階になれば、今までの知識が生かせそうなので、そうなるまで必死に勉強をしようと思います。

ということで今日はOpenGLの基礎的なことについてです。

 

OpenGLとは

 ずばり、グラフィックスハードウェアを最大限に利用するためのライブラリです。

ライブラリとは、よく使う機能をまとめたプログラムのことです。例えば、画像を読み込んで何か処理をしたいとします。この時全て自分でコードを書こうとすると、画像を読み込む処理だけでC++だと100行ぐらいになってしまいます。さらに、画像にフィルタをかけたりとか、拡大・縮小したりとなると、軽く1000~2000行になってしまいます。画像の拡大・縮小やフィルタリング等は画像処理をするうえでは頻繁に使います。このようなよく使われる機能をひとまとめにしたものがライブラリです。

OpenGLを使うことで、(全て自分で書くのと比較すると)簡単に3次元の物体を描くことができます。しかも、それに陰をつけたり、鏡のようにしてみたりもできます。

CGができるまでの流れ

何かの処理の一連の流れをパイプラインといいます。CGができるまでの一連の流れをグラフィック・パイプラインといいます。OpenGLのグラフィック・パイプラインはGTXSDとなっています。GTXSDとは、各処理の頭文字をとったものです。

  • Generation:メモリを確保する
  • Traversal:描画する点(頂点)を生成
  • Transform(Xform):頂点ごとの輝度計算、座標変換など
  • ScanConversion:頂点に囲まれてる領域の塗りつぶし
  • Display:表示

詳しいパイプラインは、『OpenGLプログラミングガイド』に載っています。本格的に勉強したいという方にはあの本はおすすめだと思います。

 

-参考文献-

  1. Dave Shreiner, Graham Sellers,John Kessenich,Bill Licea-Kane,松田晃一(訳), "OpenGLプログラミングガイド原著第5版",ピエゾんエデュケーション
  2. Philip Rideout,安藤幸央,"iPhone3D プログラミング"

-参考資料-

  1. http://nae-lab.org/~kaki/paper/VSJ/VisFrontier/OpenGLarchiAnswers.pdf(日本SGI株式会社のppt)