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