C#で書かれたOpenGL用のクラスライブラリです。
一歩二歩散歩なりに作ってみました。
フリーソフトとしてここで公開しています。
OpenGLのラッパーとして
OpenTKというフリーのライブラリを使用しています。
GLSharpのメインは、
クラスライブラリの部分です。
これは、OpenGLプログラミングを簡単にするためのもので、
初期化(レンダリングコンテキストの作成)や、テクスチャの作成がサクッとできたり、
カメラやライト、マテリアルを表すクラス、文字列描画など、
いろいろあります。
だいぶコードを書く手間が省けるし、お手軽に扱えるようになるはずです。
また、MQO(Metasequoia Object)ローダーも実装しています。
(曲面に未対応など、まだ機能が十分でない点もありますが・・・。)
Metasequoiaという3Dモデリングソフトがありまして、
フリーソフトでありながら高機能、かつ初心者でも扱いやすいという、
なかなかの優れモノがあるのです。
(それゆえ、ユーザーも結構多いようです。)
GLShrarpでは、このMetasequoiaで作成したモデルデータ(.mqoファイル)を読み込んで、
OpenGLで描画することが可能です。
ついでに、MQO形式での書き出しもできたりします。
GLSharpの主なクラスは以下のようになっています。
GLSharpの配布形式は基本的にソースコードなのですが、
OpenGLラッパーとして使用しているOpenTKのソースコード量がなかなか多いので、
OpenTKはビルド済みのDLL(OpenTK.dll)のみを含めてあります。
(ソースコードはOpenTKのサイトで入手してください。)
それゆえ、
「OpenGLラッパーDLL」+「その他のクラスライブラリのソースコード」
というやや変則的な構成になってます。
サンプルプログラムもセットになっていて、こんな感じになってます。
一応チェックはしてるのですが、
所詮は個人の制作物ですから
ひょっとしなくてもバグがあると思われます。
そんなものを見つけたときは、ブログのコメントあたりでご一報いただけると、非常にありがたいです。
また、その他、改善してほしい点などがあったら、同様にどうぞ。
では、ダウンロードはこちらから、どうぞ。
(※ Visual Studio 2010 のソリューションをZIPしてあります。
Visual C# 2010 Express でも使用できます。)
ビルド済みのサンプルのプログラムも上げときます。 ビルドするのめんどくさいとか、とりあえずサンプルを動かしてみたいという方は、こちらをどーぞ。
こっちは古い方です。
GLSharp5_3_1.zip
GLSharp5_1_0.zip
GLSharp_4001.zip
The Open Toolkit Library
http://www.opentk.com/
GLSharpでは、冒頭でも述べたように、OpenTKを使用しています。
OpenTKについての詳細は、上記のサイトを参照してください。
一部、YaneuraoGameSDK.NET(通称Yanesdk.NET)
という、.NET用のライブラリからソースコードを使用させていただきました。
(アニメーションのフレームレートを制御する「FPSTimer」クラス。
だいぶ変更が加えてありますが。)
YaneSDKに付いての詳細は、
YaneSDKのホームページ
http://yanesdkdotnet.sourceforge.jp/
を参照してください。
(2012.10.15)
ver. 5.4.3 - OpenTK 1.0
今更ですが、アップしているファイル内の、ビルド済みの"GLSharp.dll"に不具合があることが判明したので修正。
なんかうかく動かない、と思っていた方、申し訳ないです。
ついでに、使用するOpenTKを、ver.1.0のリリース版に変更。
GLSharp自体のソースはそのままです。
(2010.09.25)
ver. 5.4.3 - OpenTK Beta 2
レンダリングコンテキスト作成時に発生することがあるバグの修正。
(2010.04.25)
ver. 5.4.2 - OpenTK Beta 2
・OpenGLのバージョン取得時にエラーになるのを修正。
→実行環境に依存するバグなのですが、
以前のバージョンでデモがうまく動かなかった人は動くようになるかもしれません。
・テクスチャで描画する文字にアンチエイリアスを指定しても無視されてしまうバグを修正。
(2010.03.17)
ver. 5.4.1 - OpenTK Beta 2
文字列描画関連のクラスで、
GDIフォントオブジェクトがリークしていたのを修正。
(2010.02.28)
ver. 5.4.0 - OpenTK 1.0 Beta 2
文字列描画関連のクラスを再設計。
-> 文字に色をつけられる機能を追加。
FPSTimerを改善。
-> FPSの制御を改善。前よりもだいぶマシになったのではないかと。
(2009.12.14)
ver. 5.3.1 - OpenTK 1.0 Beta 2
RenderingContextクラスと、PixelFormatAttributeクラスを修正。
(2009.12.10)
ver. 5.3.0 - OpenTK 1.0 Beta 2
Sceneクラスを再設計。 -> AnimationSceneクラスの廃止、FrameControllerクラスの追加、など。
MQOファイルのバイナリ頂点データ、ミラーに対応。
MathUtilクラスを追加。
Selection.Pick()メソッドの仕様変更。
RederingContextクラス、PixelFormatAttributeクラスのバグを修正
( -> Radeon系のビデオカードを使用している場合にレンダリングコンテキストの初期化でエラーが発生していたっぽい。)
サンプルプログラム(GLSharp_Demo)にQuadricsSample(GLUの2次曲面オブジェクトのサンプル)を追加。
一部のコードファイルのエンコードがシフトJISだったので、すべてのコードファイルのエンコードをUTF-8に変更。
など。
(2009.03.12)
ver. 5.2.1。
MeshModelクラスのMQOファイルロード部分について、
バグがあるという指摘をいただいたので修正。
(2008.11.13)
ver. 5.2.0。
テクスチャによるテキスト描画機能(TextureTextLabelクラス他)を追加。
そのついでに、テキスト描画関連クラスを再設計。
テキスト描画関連クラス名変更 : BitmapFontGlyph→BitmapGlyph、OutllineFontGlyph→PolygonGlyph、とか。
GLSControl、GLSFormのバグ(デバッグ無しで実行すると
アプリケーション終了後にプロセスが残ってしまう)を修正。
(2008.07.11)
Ver. 5.1.0。
OpenGLコントロールとか、Sceneクラスの導入とか、
アニメーションの基礎部分を実装とか、いろいろ機能を追加。
OpenTKも新しいバージョンに乗り換え(ver. 0.9.1)。
(2008.05.4)
Ver. 5.0.1。
Capture.CaptureBufferAsBitmapRGBAメソッドで
バッファをキャプチャした画像の色がおかしかったのを修正。
(2008.04.05)
OpenGLラッパーをOpenTKに変更。
カメラの水平方向の回転がおかしかったのを修正、
Texture2Dクラスの内部構造の見直し、
その他いろいろ修正。
(2007.12.01)
MeshModelクラス MQO形式での書き出し(「MeshModel.SaveAsMQOFile」メソッド)で、
バグがあったので修正。
ついでにマテリアルやテクスチャを重複して書き出さないように若干改良。
(2007.11.17)
GLMQO(MQOローダー)をGLSharpへ統合して、ソースコード公開。
その他、いろいろ。
(2007.09.23)
Positionクラスをかなり書き換え。値変更時のイベントを追加、など。
OutlineFontLabelのTextMetricsプロパティの値がおかしかったのを修正。
Vector、Matrixクラス、double型用のオーバーロードメソッドを追加。
(2007.07.22)
基本部分を大幅に作り替え、エクステンションも使用可能になりました。
CameraやTexture2Dなども、結構変更されてます。
(2007.05.30)
テクスチャ作成時にミップマップを使用するように指定しても反映されないのを修正。
(2007.04.07)
Texture2Dクラスのコンストラクタで、エラーが発生する場合があったのを修正。
(2007.04.02)
細かい改良など。
MatrixクラスとCameraクラスに、
少し手を加えました。
(2007.03.28)
細かい部分の修正など。
実行環境に依存するかは不明ですが、
メッシュの頂点を点として描画すると急に重くなるのを、修正。
(2007.02.19)
文字列描画まわりをかなり変更。
文字を描画するディスプレイリストの作成・管理を行うクラスを追加、
それを利用して文字列描画を行うクラスも追加。
(2006.12.17)
大幅更新です。
Texture2Dクラスが、テクスチャ座標自動生成にも対応。
Mesh、Tessellator、OutlineFontMeshクラスなどを追加。
予告通り、テセレーションを行うクラスを追加しました。
簡単に輪郭線からメッシュを作成できます。
アウトラインフォントの文字をメッシュ化するクラスも追加。
MeshクラスはGLMQOから引っ越して、ソースコード公開です。
あと、マテリアルの色指定がちょっと便利になってます。
あちこち、細かい変更も多数あり。
デモプロジェクトも、新しい機能のデモを追加。
(2006.11.05)
あちらこちら、修正が入ってます。
OutlineFontTextクラスの機能追加とかも。
デモプロジェクトでは、
マウスでの視点操作に加えて、
バッファを画像としてキャプチャしてファイルに保存、
なんてこともしてます。
近いうちに、
GLUのテセレーションをサポートするクラスを追加するかも。