2D Game Dev(C ++)の使用開始:DirectXまたはOpenGL?[閉まっている]


12

だから、私はゲーム開発の扉に足を踏み入れようとしている学生で、2Dの何か、おそらくテトリス/スペースインベーダー/小さなマウスインタラクションクローンのようなものを探しています。

私はC ++と2dの方向に検索を向け、最終的にDirectX / OpenGLにつながりました

今、私が理解しているように、これらのパッケージはすべて、画面上に描画するだけです。そして、この時点で私が本当に気にすることはそれだけです。音は必要ありません。入力はおそらくstdlibで処理できます。

C ++で基本的なゲームを作成しようとする初心者にとって、DirectXまたはOpenGLをお勧めしますか?どうして?2つの機能の主な違いは何ですか?どちらがより使いやすいですか?

回答:


16

2DにはSDL(http://www.libsdl.org/)をお勧めします。最初にグラフィックスを始めた場所であり、当時C ++をほとんど知らなかったにもかかわらず、かなり使いやすいものでした。

これ (ミラー)は、私が始めて非常に有用であることがわかったチュートリアルのセットです(それらは私がそれらを介して働いたときに〜4年前でさえ少し日付がありましたが、SDLが大きく変わったとは思わず、まだ関連するはずです)。

SDLは入力処理も行い、SDL_Mixerは基本的なオーディオを処理できます。

DirectDrawやOpenGLで2Dを扱うことは一度もなかったので、そこでコメントすることはできませんが、SDLをお勧めします。


1
SDLは良いことがわかりましたが、パスを取得するのは非常に難しく、セットアップも適切に含まれています。
スケイス

1
まともなチュートリアル(さまざまなIDEのセットアップチュートリアルを含む)については、lazyfoo.net / SDL_tutorialsも確認してください。
-BeanBag

@Skeithに同意しました。初心者向けに初めてSDLをセットアップすることの頭痛を想像することはできません。アマチュアやプロの一般的なセットアップの問題に対処するのは十分に困難です。初めてSDLのセットアップを取得した後、残りの人生で何でも簡単にセットアップすることができました。それはそれが私に与えたどれほどの頭痛の種です。ライブラリをセットアップするのに典型的な以上のことを学んだ経験。私が最も多くの問題を与えたもの、または私が抱えていた問題を正確に思い出すにはあまりにも昔ですが、他のすべてのライブラリは簡単にセットアップできました。
Carter81

7

ゲームプロジェクトにはSDLとSFMLの両方を使用しました。完成したゲーム、テトリスゲームにSDLを使用し、シェーダー実験のウィンドウレイヤーとしてSFMLを使用しました。私の経験から言うと、SDLはそれが言っていることだと言わなければなりません。これは単純なダイレクトメディアレイヤーであり、メディア(サウンドとビデオ)が扱うデータを、異なるプラットフォーム間でやり取りできるレベルまで抽象化します。それが「すべて」です。

そのため、通常は、他のいくつかのライブラリ、特にSDL_mixer、SDL_gfx、SDL_imageと混合する必要があります。これらのライブラリは、誰もがゲームを作成するために必要な機能を提供します。

これらのライブラリはすべてCプログラミング言語向けでもあり、その規則に従っています。それに問題があるわけではありませんが、ioとの対話方法にオブジェクト指向のアプローチが必要な場合は、基本的に自分でその層を構築する必要があります。

SFMLには、すぐに使用できるすべてのものが付属しています。音、ビデオ、ミキシング、フレームキャッピング、オブジェクト指向です。それがあなたが望むものであるならば、私はあなたがそのために行くことを勧めます。SFMLには、openglの一部の基本機能(具体的にはbeginShape / EndShapeおよびピクセルシェーダー)の抽象化レイヤーもあります。SDLにはそのようなものはなく、単にマージする方法があるとは思いません。

PS C / C ++から会話を追い払うのではなく、特定の理由でその言語を使用しておらず、より簡単な言語が必要な場合は、常にpygameがあります。これは基本的にPython用のSDL +です。


2
SFMLもC ++ですが、SDLはCです。これは、実際にC ++を学習したい場合に違いがあります。
jsimmons

5

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844

私はこれらの発言に同意し、DirectXがOpenGLよりも優れている理由の素晴らしい議論だと思います。

そのジャーナルは、ウルフィアのデビッドに対応しています。

私はそれが少しバランスをとることを願っています。;)

ただし、一般的に、クロスプラットフォーム、クロスAPIフレームワークを使用している場合:

WindowsではDirectXを使用し、* nixではOpenGLを使用します。


素晴らしい読み=)この主題はなんと地雷原です...
ネイラー

6
404、ページが見つかりません
-axel22


archive.gamedev.net / ...リンクで404を受け取ります。
Exilyth

4

http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

私はこれらの発言に同意し、OpenGLがDirectXよりも優れている理由の素晴らしい議論だと思います。

ただし、この質問は絶対に意見の問題であり、DirectXはOpenGL、特に10と11、特にゲーム開発のコンテキストでその利点を絶対に持っています。

また、OpenGLを選択した場合、SDLは素晴らしい人気のあるライブラリであり、OpenGLを学習するためのリソース(NeHeなど)が豊富にありますが、それはおそらく別の質問の場所です。


1
OGLとDXの議論の対抗策として、Unityのメンバーは、ほとんどのビデオカードのデフォルトのOpenGLドライバーが非常に悪いため、WindowsでDirectXに切り替えることを明示的に決定しました。私は目の前にリファレンスを持っていませんが、彼らの会議で一度、彼らはOGLドライバーがWindowsで一番のクラッシュの問題であるという線に沿って何かを言いました。幸いなことに、それらの抽象化レイヤーは、ユーザーの観点からはあまり気にしないことを意味します。
テトラッド

UNIXとWindowsの両方にビジネス指向の視覚化ソフトウェアを作成しています。Windowsで発生する問題の大部分は、OpenGLドライバーに関連していることを確認できます。
drxzcl

1

始めたばかりの場合は、既存の2DエンジンまたはSFMLなどのフレームワークを使用することをお勧めします。


1

私はDirect Xが好きで、多くのプロジェクトで数年間使用していますが、あなたの学習がバージョンの問題に気をつけているなら。

ダイレクトxコードの大部分は異なるバージョンではコンパイルされないことがわかりました。チュートリアルを実行しようとすると、これは地獄になります。

Direct Xをお勧めします。すべての機能があり、最初に始めたときに簡単になり、次に進むにつれてより高度な方法で操作できるようになるためです。


1

Haafのゲームエンジン

私はそれがどれほど最新であるかわかりません(つまり、そうではありませんが、使用できないはずの理由はないと思います)が、私は少し前にそれを使用しました(C ++)と私は本当に楽しかった。HGEは05.08から更新されていませんが、繰り返しますが、非常に簡単に学習でき、高速でした。また、パーティクルシステムのようなあらゆる種類のツールとヘルパーが付属しています。

とにかく、実際のゲームを作成したい場合は、描画などのプロセスで「内部」で行われていることを学ぶのではなく、openGLまたはDirectXよりも高いレベルを使用することをお勧めしますまたは、実際のゲームを作成するのではなく、画面上に物を描くのに時間を費やします。そして、HGEは間違いなくチェックする価値があります。

http://hge.relishgames.com/


0

私はあなたと同じ立場で、数か月前に(iPhoneプラットフォームで)自分でゲーム開発に取り組み始めたばかりです。Cのバックグラウンドから来て、フレームワーク(特にCocos2d)を使用することを実際にお勧めします。

フレームワークの利点については、この記事で詳しく説明しますが、主にOpenGLでの低レベル処理のほとんどを処理し、ゲーム開発に必要と思われるものに対処する方法を提供します。彼らは素晴らしいコミュニティを持っており、オープンソースです。したがって、フレームワークのコアコードにアクセスする必要がある場合/必要に応じてその一部を変更する必要がある場合/必要に応じて低レベルのOpenGLに移動する場合でも、その選択肢が与えられます。

あなたは直接OpenGLのルートに行くことができますが、私にとってはやり過ぎのようです。

さらに、そこに存在するさまざまな物理ライブラリ(Google ChipmunkとBox2Dなど)を調べてください。

乾杯!


1
-2にふさわしくない場合は+1。このウェブサイト上にあまりにも多くのトロルがあり、理由もなくネガを与えています。正直なところ、なぜ0未満のものも表示できるのかさえ理解できません。YouTubeがダウン投票を許可するのと同じくらいばかげている。
Carter81
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.