C#でOpenGlを使用していますか?[閉まっている]


118

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

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


私はこれが非常に古いスレッドであることを知っていますが、Unityはあなたにとって興味があるかもしれません
clabe45

回答:


129

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にはしばらくの間新しいメンテナがいて、活発な不和のコミュニティがあります。したがって、別のライブラリを使用するという以前の推奨は必ずしも真実ではありません。


5
これらはすべて非推奨であり、OpenGlコアプロファイルから削除されているため、これらの関数はそれほど代表的ではないと思います。
Arne

6
確かに、これらの関数はコアプロファイルから削除されています。しかし、議論はまだ有効です。"OpenTKは、Tao APIを改良したもので、オーバーロード、厳密に型指定された列挙型、例外、標準の.NET型を使用した慣用的なC#スタイルを使用しています"
Syaiful Nizam Yahya 2013

1
リンクされたWebサイトは現在この投稿では無効です。
Sonny Childs

16

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

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

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


Linux(monoを使用)ではどうしますか?
減速

基本的にまったく同じ、mono-project.com / Interop_with_Native_Libraries
Jeff Mc

15

タオは素晴らしいフレームワークになるはずです。

彼らのサイトから:

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


1
タオのための新しいウェブサイトは、次のとおりです。タオフレームワーク
チミン


7

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

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

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


5
リンクが切れています。プロジェクトを共有してください。ありがとう。
危険な

7

タオフレームワークもお勧めします。ただし、もう1つ注意点があります。

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


かなり前にページがダウンしたときにタオに何が起こったのか私にはわかりません。
ドミニクK

タオのための新しいウェブサイトは、次のとおりです。タオフレームワーク
チミン

1
タオは動く標的のようです。リンクを更新したので、今はモノからsourceforgeに移動しています。
Oliver

うわー、2005年11月... OpenGLはそれほど変わりませんか?
ジョクル

1
彼らは今、githubのページを使用して、そこにリダイレクトを設定していないように見えるええ@JonHarrop opentk.github.io
Dreamwalker

4

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


これらのクラスはどの名前空間にありますか?
メガバイト

4
バージョン4.0以降、OpenGLは.NETの一部ではありません
mafu

3
@MegaByteプラットフォームの呼び出しを介してアクセスする必要があります。
限定的な贖罪

2

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に基づいています...

補足として、これらは唯一の考慮事項ではありませんが、一部の選択を容易にする可能性があります...


1

XNA 2.0には、最低でもシェーダー1.1カードが必要です。古いテクノロジーですが、誰もが持っているわけではありません。一部の新しいラップトップ(インテルのグラフィックスを搭載した当社の東芝製タブレット)では、シェーダー1.1がサポートされていません。XNAはこれらのマシンでは動作しません。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.