ラッパークラスをどうするか



C#でどうやってOpenGLの関数を呼び出すのか?

OpneGLを扱うということは、
「opengl32.dll」
「glu32.dll」
などから、関数(や定数)を呼び出すということ。
しかし、これらのDLLは.NETに対応していない(アンマネージ)ので、C#から直接それらの関数を呼び出すことはできません。
.NET(マネージ)なC#からこれらの関数を呼び出すためには、ちょっと一手間かけてやる必要があるのです。
つまり、「アンマネージDLLの関数のインポート」(詳細は、Visual Studioのヘルプなどを参照されたし。)ということをやります。

要は、C#のソースコードの中で、
アンマネージDLLの各関数を呼び出すための記述をしてやらなければならないのです。
このような記述を一つのクラスにまとめたものは、「ラッパークラス」と呼ばれます。

ところが、OpenGLの関数は非常に数が多いので、この記述を自分で書くとなると、とってもしんどいです。
で、どうするかというと、
web上でOpenGLのラッパークラス(ソースコードのファイルだったり、.NET対応のマネージDLLだったり)が公開されているので、
そういうのを入手して使わせていただくわけです。

web上で公開されているフリーのOpenGLラッパーを、
次にいくつか挙げておきます。

The Open Toolkit

http://www.opentk.com/
OpenTKとも。
オープンソース、MITライセンス。
まだ開発中(2009.8.25現在)でver. 1.0未満だが、それでも十分使える。
OpenGL定数が用途ごとに列挙体でまとめてあり、
関数の方もその列挙体を引数にとるようになっているので、
VisualStudioのIntelliSense機能を使って楽にコーディングできるのがいい感じです。
エクステンションも使用可能。

Tao

http://www.mono-project.com/Tao
マネージDLL(オープンソース、MITライセンス)。
エクステンションも使用可能。
OpenGL以外にも、
OpenALとかSDLなどがセットになっている。

C# wrapper for OpenGL

http://www.colinfahey.com/
C#のためのOpenGLラッパーです。ソースコード。
エクステンションとかも対応しているらしい。

NeHe

http://nehe.gamedev.net/
サイト左側の「OpenGL Basecode」の「NeHeGL C#」。
ラッパークラス + OpenGL初期化のサンプル(Visual Studioのプロジェクト)。
ラッパークラスのソースコードをよく見ると、OpenGL関数の呼び出しで、関数の引数が若干怪しいものがあるような・・・。
OpenGLのサンプルプログラムが豊富なサイト。

CsGL

http://csgl.sourceforge.net/index.html
マネージDLL(オープンソース)。
単なるラッパークラスではなく、
OpenGLを表示するためのコントロールなど
いろいろと便利そうなものが用意されている(らしい)。
しかし、既に開発・更新終了。

GLSharp

GLSharp
とか、適当に名付けてみました。
私(一歩二歩散歩)なりに、OpenGLラッパー+クラスライブラリなものを作ってみました。
最初のほうに挙げたOpenTK(に修正を加えたもの)をベースにしています。
なので、ラッパーよりも、クラスライブラリがメインです。


おすすめとしては、
OpenTK 、または Tao が良いかと。
CsGLは開発が終了して久しいし、
NeHeに置いてあるラッパーはあくまでもサンプルプログラムのレベルなので、
CsGLとNeHeはあまりおすすめできない。

まぁ、どれを使っても、
OpenGLの関数とかがちゃんと呼び出せるのであれば、大抵は問題ないと思います。


<back to OpenGL menu>