C++ .net で OpenGL

なんとなく、C++ .net の使い方もわかってきたので、C++ .net から OpenGL を使ってみました。

フォーム上に貼り付けた、PictureBox に対して OpenGL の描画を行ってみます。

そんなわけで、サンプルはこちら。(気が向いたら張る)

先日のエントリーで、PictureBoxからHWNDが取得できることがわかったんで、これ以上の説明は要らないと思いますが...まぁ飽きるまで書いてみることにします。

ポイントは、コントロールからHandleを取得して、ToInt32()を利用して、HWND型にキャストするってだけです。

あとは、win32 API の GetDC( HWND ) を利用して、HDCを取り出してから、wglCreateContext() で HGLRC を取得しておしまいです。

個々で一点注意するべきことがあるのですが、HGLRCを取得するためには、プロジェクトのプロパティにある、[構成のプロパティ]-[全般]-[共通言語ランタイムサポート]を"共通言語ランタイムサポート(/clr)"に設定しておく必要があります。

...わたしゃ、あほなんで、これに気付かずに wglCreateContext() から NULL が帰ってくる原因の特定に時間が掛かってしまいました。

参考url:

○ t-pot

http://www.t-pot.com/

なんとなくにでも3Dプログラムを打つ人なら、お世話になっているであろうt-potさんのページです。
このサンプルは、t-potさんが公開されている「.net で OpenGL」を参考にさせていただきました。
(ってか、Managed C++C++/CLRにしただけですけど...)