あかすくぱるふぇ

同人サークル「あかすくぱるふぇ」のブログです。

2015年07月

まず、OpenGL自体はフリーで使えます。
ライセンスは、SGI Free Software License B Version 2.0というもので、MITライセンスに基づくライセンスだそうです。
http://osdn.jp/magazine/08/09/21/2324233
http://osdn.jp/magazine/08/09/24/010239
http://kojika17.com/2011/01/web-designers-have-to-remember-license-summary.html

Visual StudioをインストールすればOpenGLの基本機能はすぐに使えますが、拡張機能はglext.hを入手しないと使えません。
glext.hはたまたまダウンロードしたプログラムなどに付属している場合がありますが、古い版だと新しい機能が漏れている場合があるので、以下のページから最新版を入手するが吉です。
https://www.opengl.org/registry/

OpenGLの拡張機能を使う場合、普通はGLEWというライブラリを使いますが、OpenGLとは異なるライセンスなので注意が必要(と言っても、修正BSDライセンスとMITライセンスなので緩いけど)。
余計なライブラリを使いたくない場合、GLEWがなくても、OpenGLの拡張機能は使えます。
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20040212
http://project-asura.com/blog/?p=401

なお、「glext.hに対応するライブラリファイルは必要ないのか」という疑問を持つ方がいるかと思いますが、上記リンクにあるように、wglGetProcAddress()を用いて関数のアドレスを取得して利用するので、ライブラリは不要なようです。
https://shikihuiku.wordpress.com/2012/07/30/windows%E4%B8%8A%E3%81%A7%E3%81%AEopengl-extension/



OpenGL1.0から1.3におけるテクスチャ機能の変遷についてやっと理解できたので、備忘録としてブログに書き留めておく。

・1.0
1.0には、glActiveTexture()もglGenTextures()もglBindTexture()もない。
OpenGLのテクスチャ機能はデフォルトで、テクスチャユニットGL_TEXTURE0が有効であり、無名テクスチャがバインドされているわけだが、1.0ではこの組み合わせしか使えない。
その分、使い方は単純であり、無名テクスチャに対してglTexImage2D()でフォーマットの設定や画像配列のコピーをしてレンダリングするだけでよい。

・1.1
1.0に対して、glGenTextures(), glBindTexture()などが追加される。
つまり、無名テクスチャ以外のテクスチャオブジェクトを生成して、それをglBindTexture()で切り替えて使用することができるようになったのだ。
また、glCopyTexImage2D()も1.1で追加されており、この関数は、バインドされているテクスチャに対して、バッファの内容をコピーする。
何をコピーするかは、glTexImage2D()で設定したフォーマットによって決まる。

・1.3
1.1に対して、glActiveTexture()などが追加される。
つまり、GL_TEXTURE0以外のテクスチャユニットが使えるようになる。
これによって、マルチテクスチャが可能となった。

DirectShowとMFCで動画ファイルを再生するプログラムを作り、Githubに公開しました。
https://github.com/kanosawa/DirectShowMfcMoviePlayer

以下のサイトを参考にさせていただきました。
http://www.geekpage.jp/programming/directshow/ivideowindow-3.php

上記サイトと違い、ピクチャーコントロールに動画を表示しています。

↑このページのトップヘ