GLES#というOpenGL ESのC#ラッパーを作成しました。スクラッチから書いた部分はパブリックドメイン、Vincent ESやGLUT|ESから流用した部分は元のライセンスです。Windows Mobile対応のためid:n7shi:20090106の方法により無料のVC# Expressで開発しています。
libGLES_CM.dllとglutes.dllが動く環境に対応します。id:n7shi:20091001のx86/x64/ARMバイナリを同梱しています。EXEをC#で書くとプラットフォームに依存しない共通バイナリになるため、プラットフォームごとにビルドする手間が省けます。ラッパーにはid:n7shi:20091002で実装したglBegin(), glEnd(), glFrustum()が含まれます。
継承を利用した書き方
ラッパークラスを継承すればC言語のように関数名だけで呼び出せるため、C言語からの移植が比較的容易になります。オブジェクト指向的には問題がありますが、移植の簡単さを優先した書き方です。以下に例を示します。
class Program : GlesSharp.GL { static void reshape(int width, int height) { float h = (float)height / (float)width; glViewport(0, 0, (int)width, (int)height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1, 1, -h, h, 5, 200); glMatrixMode(GL_MODELVIEW); } }
継承せずに利用することも可能です。ラッパーとしては普通の書き方です。
using GlesSharp; class Program { static void reshape(int width, int height) { float h = (float)height / (float)width; GL.glViewport(0, 0, (int)width, (int)height); GL.glMatrixMode(GL.GL_PROJECTION); GL.glLoadIdentity(); GL.glFrustum(-1, 1, -h, h, 5, 200); GL.glMatrixMode(GL.GL_MODELVIEW); } }