回答:
OpenTKは、オーバーロード、厳密に型指定された列挙型、例外、および標準の.NET型を備えた慣用的なC#スタイルを使用するため、Tao APIの改良版です。
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
C APIを単にミラーリングするTaoとは対照的に:
Gl.glBegin(Gl.GL_POINTS); // double "gl" prefix
Gl.glColor3ub(255, 255, 0); // have to pass RGB values as separate args
Gl.glVertex3f(0, 1, 0); // explicit "f" qualifier
これにより、移植が難しくなりますが、非常に使いやすくなっています。
おまけとして、フォントレンダリング、テクスチャロード、入力処理、オーディオ、数学などを提供します。
2016年1月18日更新:今日、OpenTKメンテナはプロジェクトから離れ、将来の不確実性を残しています。フォーラムはスパムでいっぱいです。メンテナはMonoGameまたはSDL2#への移行を推奨しています。
2020年6月30日更新:OpenTKにはしばらくの間新しいメンテナがいて、活発な不和のコミュニティがあります。したがって、別のライブラリを使用するという以前の推奨は必ずしも真実ではありません。
ラッパーなしでOpenGLを使用して、C#でネイティブに使用できます。Jeff Mcが言ったように、DllImportで必要なすべての関数をインポートする必要があります。
彼が除外したのは、OpenGL関数を使用する前にコンテキストを作成する必要があることです。難しいことではありませんが、実行する必要のある他のそれほど直感的でないDllImportはほとんどありません。
VS2012でサンプルC#プロジェクトを作成しました。WindowsボックスでOpenGLを実行するために最低限必要なものはほとんどありません。それはウィンドウを青く塗るだけですが、あなたが始めるのに十分なはずです。この例はhttp://www.glinos-labs.org/?q=programming-opengl-csharpにあります。下部にあるラッパーなしの例を探します。
タオフレームワークもお勧めします。ただし、もう1つ注意点があります。
これらのチュートリアルをご覧ください:http : //www.taumuon.co.uk/jabuka/
XNAとOpenGLのどちらを選択するか(私が知っているトピックとは少し異なりますが、以前に取り上げたため)は、XNAではなくOpenGL(およびOpenGLではなく他のXNA ...)を使用すると便利な場合があります。
LinuxまたはMacでMonoを使用してアプリケーションを実行する場合は、OpenGLを使用することをお勧めします。また、あまり知られていませんが、Citrix環境でアプリケーションを実行する顧客がいる場合、DirectX / Direct3D / XNAはOpenGLほど経済的ではありません。この理由は、OpenGLアプリケーションは、ハードウェアでの実行に専用の仮想サーバーを必要とするDirectX / XNAアプリケーションよりも少ない数のサーバー(単一のサーバーが無限の数のアプリケーションインスタンスをホストできないパフォーマンスの問題)で共同ホストできるためです。加速モード。サポートされているグラフィックカードなどの他の要件も存在しますが、XNAとOpenGLの問題については引き続き説明します。ITアーキテクト、ソフトウェア開発者などとして、OpenGLとDirectX / XNAのどちらを選択するかを検討する必要があります...
余談ですが、WebGLはOpenGL ES3に基づいています...
補足として、これらは唯一の考慮事項ではありませんが、一部の選択を容易にする可能性があります...
XNA 2.0には、最低でもシェーダー1.1カードが必要です。古いテクノロジーですが、誰もが持っているわけではありません。一部の新しいラップトップ(インテルのグラフィックスを搭載した当社の東芝製タブレット)では、シェーダー1.1がサポートされていません。XNAはこれらのマシンでは動作しません。
これは私たちにとって重要な問題であり、TaoとOpenGLに移行しました。さらに、Taoには、オーディオとLuaのサポートのためのバインディングがあります。