2012-02-20 11 views
0

私は現在、大規模な書き換えを行っているゲームエンジンを作成中です。最初に、私はどのライブラリをエンジンと組み合わせて使うか検討しています。明らかに、私はここでOpenGLを使うつもりです。私はそれを前進させるために、また下位互換性を持たせるために何をやろうとしています。FreeGlutとSDLの組み合わせを使用

主な問題は、私の研究のほとんどから、私はSDLのような偉大なライブラリ(1.3を除いて - 私は安定しているとは思わない? 4.2ではなくOpenGL 3までをサポートします。しかしFreeGlutは、最新かつ最高のものをサポートしており、エンジンの基礎を学ぶ良い方法のようです。

ただし、キーボードI/Oやサウンド入力オーディオなどの設定は他にもあります。したがって、私はglutを使用してOpenGLを初期化し、OpenGLを使用してそれを使用することができるかどうかを検討しています。

もちろん、 OpenGLでQtを使用するオプションは常にありますが、可能ならば私のメインループを確実に制御したいと思います(はQtとOpenGLでです)。

私もSFMLについて聞いたことがありますが、最終的には、私がCライブラリを使って書かれたライブラリを利用して、基本的なレンダリングの大部分を処理する予定です(純粋なスピード手続き的にメモリ管理を行う)。

このように、私はここで何をすべきか迷っています。 IS Qtはこれに適していますか、メインループ制御(SDLなど)を可能にし、必要なカスタマイズを提供するCのような代替手段(FreeGlutなど)がありますか?

+0

私は、これらのライブラリのいずれも、OpenGLでコンテキストを作成する以外に何もしないと思います。だから(もし私が間違っていると誰かが私を修正する)彼らはOpenGL 4.2で動作するだろう。 – Thomas

+0

また、C++を使用することができないのはなぜですか?パフォーマンスクリティカルなセクションは、好きな場合でもCのようなスタイルで書くことができます。 – Thomas

+0

主にMallocやFreeのようなものをC++では避け、C言語ではC++よりも好むものがあるからです。 Cはポインタでうまく動作しますが、C++でも同じことが言えますが、まだ考慮に入れなければならないわずかな違いがあります。私は多くのCスタイルの文字列を使い、解析する予定です。さらに、OOスタイルのオーバーヘッドなしでテストするほうが簡単です。 – zeboidlund

答えて

3

私の研究の大部分は、SDLのような偉大なライブラリ(1.3を除いて - 安定しているとは思わない? )OpenGL 3のみサポートし、4.2ではサポートしません。しかしFreeGlutは、最新かつ最高のものをサポートしており、エンジンの基礎を学ぶ良い方法のようです。

あなたの研究は欠けています。

まず、「エンジン」と呼ばれるものには、FreeGLUTはとなりません。は使用しないでください。あなたが何を意味しても、FreeGLUTは仕事のためのツールではありません。これはデモを作成するために設計されているため、メインループを所有しています。 FreeGLUTにはメインループを何らかの方法で制御できる方法がありますが、FreeGLUTを使用する標準的な方法ではできません。

第2に、SDL 1.2がOpenGL 3.2+ core contextを作成できないということは間違いありません。ただし、GL 3.2以降を使用するためにコアコンテキストを作成する必要はありません。互換性のあるコンテキストは、それらのバージョンでうまく動作します。互換性のないコンテキストを持つ唯一のプラットフォームは、MacOSXの3.2サポートです。だから私はそれについて心配しないだろう。

GLFWを試すことができます。それはFreeGLUTのようなもので、ゲーム中心のゲームです。レンダリングループなどを制御します。これは、FreeGLUTよりも優れた入力処理を提供するだけでなく、いくつかの明るい画像読み込み機能(TGAファイルのみ)を提供します。 GLFW 2.0では、C++ 11とC11の両方にネイティブスレッドAPIがあるので、これらの関数を使用することはお勧めしませんが、スレッドAPIもあります。

ただし、音声用のシステムはありません。

私も、SFMLを聞いたが、私はのために(プリミティブのレンダリングのほとんどの世話をするためにCライブラリを記述することを計画して最終的に私はC言語で書かれたライブラリに固執したいのですが純粋な速度とメモリ管理、手続き的に)。

私は「純粋なスピードとメモリ管理」を持たないC++に関する誤解を無視します。それは私が無視する共通の危機です。重要な点はこれです。SFMLは、レンダリングコードに関する限り、ウィンドウの作成と管理のみを目的としています。あなたのレンダリングコードはそれに話す必要はありません。いくつかのSFML関数を呼び出し、いくつかのSFMLオブジェクトを作成し、 "Cライブラリ" OpenGLコードはそれらのC++オブジェクトがあることを知る必要はありません。

ただし、C++で全く動作できない場合は、いつでもAllegro version 5を使用できます。これはC APIを持ち、OpenGLコアのコンテキスト、入力、オーディオ、そしてほとんどのSFMLのサポートを提供します。それはかなりまともなドキュメンテーションを持ち、モジュール化されています(SFMLとは異なる方法ですが)。

+0

SFMLにコンテキスト作成はありますか? 編集:Nevermind、そうする:) http://sfml-dev.org/documentation/2.0/structsf_1_1ContextSettings.php – zeboidlund

関連する問題