web-dev-qa-db-ja.com

C#でOpenGlを使用していますか?

C#用の無料のOpenGLサポートライブラリはありますか?その場合、どれを使用し、サンプルプロジェクトはどこにありますか?

C#はOpenGLのクラスを提供しますか?

116
MegaByte

OpenTK は、Tao APIを改良したものです。オーバーロード、厳密に型指定された列挙型、例外、および標準の.NET型を使用する慣用的なC#スタイルを使用します。

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#に移行することをお勧めします。

124
Iraimbilanja

@koronaの意味は、単なるC APIであるためだと思います。C#から次のように入力するだけで、直接使用できます。

[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);

残念ながら、呼び出すすべてのOpenGL関数に対してこれを行う必要があり、基本的にはTaoがあなたのためにしたことです。

16
Jeff Mc

Tao はNiceフレームワークであると想定されています。

彼らのサイトから:

Tao Framework for .NETは、.NETおよびMonoプラットフォームを利用したクロスプラットフォームメディアアプリケーション開発を促進するバインディングのコレクションです。

15
Ólafur Waage

SharpGL は、WindowsフォームまたはWPFアプリケーションでOpenGLを使用できるようにするプロジェクトです。

9
dharmatech

ラッパーなしでOpenGLを実行し、C#でネイティブに使用できます。 Jeff Mcが言ったように、DllImportで必要なすべての機能をインポートする必要があります。

彼が省略したのは、OpenGL関数を使用する前にコンテキストを作成する必要があることです。難しくはありませんが、他にあまり直感的ではないDllImportsを実行する必要があります。

OpenGLをWindowsボックスで実行するために必要な最低限のほとんどを備えたVS2012でサンプルC#プロジェクトを作成しました。ウィンドウを青く塗るだけですが、開始するには十分なはずです。例は http://www.glinos-labs.org/?q=programming-opengl-csharp にあります。下部のNo Wrapperの例を探してください。

7
Harry Glinos

Tao Framework もお勧めします。ただし、追加の注意事項が1つあります。

これらのチュートリアルをご覧ください: http://www.taumuon.co.uk/jabuka/

7
Oliver

これらのサポートライブラリで何をしたいですか? C#からOpenGLを使用するだけで十分に簡単であり、追加のライブラリは必要ありません。

4
korona

(私が知っているトピックから少し外れていますが、以前に提起されたため)XNAとOpenGLの選択に関しては、XNAの代わりにOpenGLを使用することが有益な場合があります(OpenGLの代わりに他のXNA ...)。

Monoを使用してLinuxまたはMacでアプリケーションを実行する場合は、OpenGLを使用することをお勧めします。また、それほど広く知られていませんが、Citrix環境でアプリケーションを実行する顧客がいる場合、DirectX/Direct3D/XNAはOpenGLほど経済的な選択肢にはなりません。これは、ハードウェアで実行するために専用の仮想サーバーを必要とするDirectX/XNAアプリケーションよりも少ない数のサーバーでOpenGLアプリケーションを共同ホストできるためです(パフォーマンスの問題により、1つのサーバーは無限の数のアプリケーションインスタンスをホストできません)。加速モード。サポートされているグラフィックスカードなど、その他の要件もありますが、XNA対OpenGLの問題を維持します。 ITアーキテクト、ソフトウェア開発者などとして、OpenGLとDirectX/XNAを選択する前に、これを考慮する必要があります...

サイドノートは、WebGLはOpenGL ES3 afaikに基づいているということです...

さらなる注意として、これらは唯一の考慮事項ではありませんが、いくつかのために選択を容易にするかもしれません...

2
Aycox

XNA 2.0には、少なくともシェーダー1.1カードが必要です。古い技術ですが、誰もが持っているわけではありません。いくつかの新しいラップトップ(インテルのグラフィックスを搭載したToshibaタブレット)では、シェーダー1.1がサポートされていません。 XNAはこれらのマシンでは実行されません。

これは私たちにとって重要な問題であり、TaoとOpenGLに移行しました。さらに、Taoには、オーディオとLuaのサポート用のバインディングがあります。

1
Chris Masterton