2011-12-08 14 views
11

私はGLUTを使いたくないです。なぜなら、それはハスケルのような感覚を持たないからです。コールバックのため、基本的にはIORefなどを使用する必要があります。GLUTハスケルの代替案?

私はGLFWと考えていますが、これは簡単なことであり、モナドでゲームループを実行できます。しかし、それは別のハードウェアで問題を抱えているようです。たとえば、ノートパソコンでは正常に動作しますが、デスクトップでは問題ありません。そして窓では、テクスチャは消えます。

私はSDLを使用していると考えましたが、ウィンドウの依存関係に問題があるかもしれませんが、どのDLLが必要かわかりません。

OpenGLウィンドウを開くには何が残っていますか?

+2

数週間前のsigfpeさんの心地よいGLUTの議論がhttp://blog.sigfpe.com/2011/10/quick-and-dirty-reinversion-of-control.htmlから見ましたか? IORefsはありませんが、あなたが探しているような「Haskellのようなものではないかもしれません。 – applicative

+0

SDLに問題はありません – Qchmqs

答えて

14

GLUTは、評判が悪く正当化されていないが、私が見つけた最高のものです。

ただし、無光沢感は使用しないのが良い理由ではありません。あなたは、ここでプロジェクトに使用したい抽象クラスの下にあります。同様に、OpenGLは命令的アイデアに深く絡み合っているため、OpenGLを使用すべきではありません。

しかし、GLUTとOpenGLは、細いです。重要な点は、それらを使用する前に、それらをより良い抽象に包むことです。 OpenGLで2Dグラフィックスのラッパーをハックするために公開しました。graphics-drawingcombinators私は信じています。私はしばらくの間グラフィックスゲームをやめていましたので、もはや最先端技術に精通していません。

GLUTのラッピングは少し難しいです。 IORefIOよりも機能的ではなく、IO(および他の必須の構成要素)を避けて対話性を表現するには、FRPという形式が必要です。結局のところ、これらのFRPライブラリは、それらの下に命令的なアイデアをラップすることになります.Cのために書かれたライブラリを扱うとき、あなたはこれをエスケープしません。とにかく下に生きていることはまったく重要ではありません。すべてのソフトウェアには、下に電圧の電気システムがあります。

とにかく、私が研究していた数年前、GLUTは実際にクロスプラットフォームで動作する唯一のライブラリでした。私は... すべてののインターフェイスを好むが、それぞれが特定の制御された条件でのみ動作します。それは大きな制約でした。もしあなたがそれを共有しなければ、あなたは何かを試してみるかもしれません。しかし、ウィンドウイングインターフェイスは非常に簡単にラップされた薄いレイヤーなので、この選択肢に大きな決定を下す必要はありません。

1

デスクトップ/ラップトップでは正しく動作しないと言った方が良いでしょう。 GLFWのCソースコードはHaskellバインディングで利用可能です。これはかなり基本的なプラットフォーム固有のAPIをいくつか使用しているだけです。