GLUTの代替品は何ですか?


12

私はOpenGLを学ぼうとしていますが、GLUTは廃止されていることがわかりました。私はすでにSDLを知っていますが、それは良い代替手段のようです。OpenDLを使用してゲームを開発するためにSDLを使用する必要がありますか、それともより良い代替手段がありますか。私はゲーム開発が初めてなので、最新技術についてはあまり知りません。

回答:


27

GLUTは廃止されていることがわかりました。

それはあなたが出くわす最初の答えを受け入れたときに起こることです。悪い情報を取得します。GLUT 3.7は使用すべきではありませんが、FreeGLUTは完全に後方互換性があります。

ただし、あなたの質問は他の場所に行きます。実際のゲームを作成するには、*形式のGLUTは不適切です。メインループを制御することはできません。ゲームではそれが本当に必要です(FreeGLUTにはメインループを制御する方法がありますが、それでも奇妙です)。GLUTはグラフィックデモを作成するためのものです。新しいグラフィック効果をテストする場合、これは非常に重要です。したがって、必要なときにツールボックスにあるはずです。ただし、メインのゲームコードでは使用しないでください。

GLFWは、GLUTに代わるゲーム中心の軽量な代替品です。OpenGLウィンドウの作成以外の基本的なサポートを提供します。入力を取得したり、画像をテクスチャとしてロードしたり、その他いくつかのことを実行できます。

SDLSFML、およびAllegro 5はすべてマルチメディアツールキットです。彼らは、OpenGLのウィンドウを作成することができますが、彼らはありません多くのより多くのものより。入力、オーディオ、およびゲームを作成するために必要な他のさまざまなものを完全にサポートします。ゲームを作成している場合、これらのいずれかが出発点として適しています。私は個人的にAllegro 5が好きですが、それは良いドキュメントときれいなAPIに対する私の偏見です。


1
AAAタイトル(PCのみとマルチプラットフォームの両方)は何を使用しますか?OpenGLウィンドウを処理するために、あなたが言及したこれら(GLFW、Allegro)を使用しますか?または、彼らは最初から独自の「すべて」を書きますか?
クアジイルファン

@iamcreasy:「AAAタイトル」(この用語は本当に嫌いです)は、これらのいずれも使用しないでください。一般的に、彼らはオープンソースを使用しません。可能ですが、ライブラリを使用する場合は、サポートされているライブラリを使用することをお勧めします。ODLやBulletのようないくつかの例外があります。しかし、それらはルールではなく例外です。
ニコルボーラス

GLFWは「画像をテクスチャとして読み込む」のはいつですか?機能リストには絶対に含まれていません。また、glfwヘッダーでその目的をリモートで果たす関数もありません。
減速

1
GLUTのもう1つの大きな欠点は、その入力モデルが特にゲームに適していないことです。生のキーコードを取得したり、修飾キー自体のプレス/リリースイベントを取得したりする方法はありません(たとえば、ctrlを発射ボタンとして使用する)。また、基礎となるGLコンテキストを取得する方法もありません例えば)。
ふわふわ

1
@NicolBolasああ、私は2.7を忘れていました。GLFW3.0リリースでは、[スレッド、イメージ]は「コンテキスト外」と宣言されました。
減速


2

あなたの目標がゲームの開発である場合、

ゲームをクロスプラットフォームにするかどうかによって異なります。ポータブル(Windows、Mac、Linux)ゲームの場合、SDLが唯一の選択肢のようです。

WindowsやXBoxのみを対象とする場合は、より優れた代替手段があります。たとえば、XNAを使用すると、大量のコードを手動で記述する必要がなくなります。

OpenGLを学ぶことが目標の場合、

生のOpenGLでプログラミングするだけで、多くの直感的でない概念、数学、巨大なマニュアルに直面する準備をしてください。


Takumiが言ったように、ポータブルライブラリとしてSFMLもあります。SDL imhoよりも優れています(最新です)
kaoD

8
-1:「ポータブル(Windows、Mac、Linux)ゲームの場合、SDLが唯一の選択肢のようです。」これは、リモートでも事実ではありません。SFMLとAllegro 5はどちらも完全に有効な代替手段として存在し、どちらもプラットフォームの基盤が広くなっています。
ニコルボーラス

1

GLUTはAPIであると同時にライブラリでもあります。元のライブラリは確かに時代遅れです。APIは別のものであり、開始するのはかなり良かったです。制限を克服し、新しいニーズに対処するには修正が必要です。現在の主要な実装はFreeGLUTです。これはサポートされており、廃止されていません。つまり、GLUT(ライブラリGLUTなど)の優れた代替手段はGLUT(FreeGLUTなど)です。

「メインループの制御」に関する上記の問題は正しくありません。新しいGLUTバージョンを使用すると、ゲームループをより適切に制御できます(それが重要な場合)。この制限はglutMainLoopEvent()によって修正されました。この制限およびその他の制限は、ここで対処されています。

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit


(それはあなたにとって重要である場合)、新しいGLUTのバージョンでは、あなたのゲームループをより良く制御することができます。」これはゲームなので、はい、それはあなたにとって重要です。また、glutMainLoopEventメインループを管理するのに適した方法はほとんどありません。必要なときに必要なデータを取得するポーリングモデルではなく、イベントドリブンモデルを使用してデータをフィードします。
ニコルボーラス

イベントから保存されたデータにポーリングする場合を除き、イベント駆動モデルはポーリングよりも効率的であると主張する必要があります(これで十分です)。システムリソースのポーリングは慎重に行う必要があります。
インゲマールラーグネマルム

0

QtはOpenGLをサポートします。Open Inventorをご覧になり、より高いレベルの3D APIに直接進むことが理にかなっているかどうかを検討してください。

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