10

Windows で 3D グラフィック効果を多用する趣味のゲーム プロジェクトを開始しています。ほとんどの場合、C++ で記述されます。

グラフィック バックエンドに OpenGL または Direct3D を使用する必要がありますか? なんで?

それとも、 OGRE 3Dなどの既製のグラフィック エンジンを使用する必要がありますか? どれ?

いくつかの「開始方法」リンクが役立ちます。(いずれかのテクノロジ、または両方で。)

編集- はい、明確化のためのgraham.reedsのおかげで、DirectX ではなく Direct3D を意味していました

編集- Mihai Lazarは、OGRE 3D などのグラフィック エンジンも使用できると指摘しました。この代替案を反映するように質問を編集しました。

4

20 に答える 20

14

OpenGL には優れた教科書やその他のオンライン リファレンスがあるため、OpenGL から始めます。3D ゲームを書くコツをつかめば、自分で判断できるようになります。

ゲームを完成させることは、たとえそれが本当にばかげていて単純であっても、適切なライブラリを選択することよりも重要です。glutを使用すると、3D オブジェクトを 1 日で画面に表示できます。NeHeのチュートリアルから始めます。

于 2008-09-02T09:32:30.920 に答える
8

C# を検討する場合は、XNA をよく見てください。趣味のプロジェクトの場合、複雑な API コードをいじる代わりに、実際にゲームを起動して実行することを望んでいると仮定すると、私はそれを十分に推奨することはできません. D3D/OpenGL と比較して、ますます成熟し、十分に文書化されており、非常に高速で使いやすいです。ボーナスとして、年間 100 ドルの Creators Club メンバーシップを使用して、Xbox 360 向けのゲームを開発することもできます。

于 2008-09-17T17:46:38.250 に答える
7

また、オーガ自体が抽象化を提供し、非常に優れたツールを備えているオーガに基づいて作業することもできます。これは 6 年以上前からあるプロジェクトなので、私はそう思います。基本ライブラリは、ソフトウェア設計について少し知る必要があるため、初心者向けではありませんが、それを使用してゲームを書いている人がたくさんいることを知りました。

すでに抽象化されているため、より重いものを学習するよりも安全で迅速です。さらに、数か月後にはとにかく 3D 専門用語を話すようになります。Ogre を始めるための本もあります。今ではちょっと古いと思いますが、とにかく出発点です。

于 2008-09-02T10:37:30.950 に答える
4

DirectX は、入力、オーディオ、およびグラフィックスというテクノロジの集まりであることを覚えておく必要があります。ただし、ほとんどの人にとって、DX はレンダラーと同義です。

私の意見では、D3D (または DirectGraphics) は DX8 以降、それほど難しくはありません。DX9やDX10は試していません。

バーナードの言うとおりです。可能な限り抽象化するようにしてください。DX または OGL の呼び出しをオブジェクト クラスの外に保持するようにしてください。

于 2008-09-02T10:39:14.300 に答える
3

私は以前にOpenGL、DirectX、またはビデオゲームの経験がなく、Ogre3dを使用してオープンソースのレースビデオゲームを作成しました。ビデオゲームで開始するための非常に優れたフレームワークです。よくできたコード、ネット上のたくさんのドキュメントと情報、そして非常に優れた開始チュートリアルです。

レンダリングエンジンはDirectX/OpenGlに依存しません。後で、OpenGLまたはDirectXを使用してゲームをレンダリングするように選択できます(コードを変更する必要はありません)。

于 2008-09-16T21:39:09.570 に答える
2

最善の方法は、レンダラーを可能な限り抽象化して、他のテクノロジーへの移植を可能な限り簡単にすることです。

于 2008-09-02T10:08:01.660 に答える
2

あなたが説明する状況では、Direct3D をお勧めします。

OpenGL の代わりに Direct3D を使用する主な理由は、多くの場合、ビデオ カード ベンダーが自社の「ハイエンド」カード用の OpenGL ドライバーでしか適切な処理を行っていないためです。

ローエンドのゲーム タイプのカードは、貧弱で一般的にバグのあるドライバーになる傾向があり、エンド ユーザーのマシンに問題を引き起こします。

移植性が重要な場合は、代わりに OpenGL または Ogre を検討する大きな理由になります。

ただし、移植する予定がない場合は、Direct3D に注目してください。Direct3D は、より優れた IHV ドライバー サポートを備えた、より広く安定したプラットフォームだからです。

于 2008-09-16T00:16:46.300 に答える
2

私は大学で OpenGL と Direct3D の比較に関する論文を書きました。Direct3D の本当の利点は、定期的なリリース スケジュールがあることです。グラフィックス ハードウェアの最新の進歩を利用するために、常に更新されています。OpenGL 2.0 と 3.0 のリリースの間にどのくらいの時間がかかりましたか? また、OpenGL の拡張機能で多くの作業が行われているため、一部のカードでは一部のレンダリングのみが機能します。

そうは言っても、OpenGL はプログラミングを始めるのが簡単になります。Direct3D は COM に大きく基づいているため、学習曲線は急勾配です。

私だったら、OpenGL よりも DirectX を選ぶでしょう。これは、非プラットフォームの独立性を犠牲にしています。

于 2008-09-02T09:40:36.767 に答える
1

私はあなたにOgre3Dを学ぶように言っている人々に本当に同意します。C ++を使用するとおっしゃっていたので、Ogre3Dが最適です。XNAはC#を使用するため、XNAそのものを学習する以外に、C#とC++の違いを学習する必要があります。また、XNAはオープンソースでもクロスプラットフォームでもないため、ゲーム開発についてより幅広い知識が必要な場合は、最初にSDLを学習し、次にOgre3Dを学習することをお勧めします。

于 2008-09-21T23:22:05.607 に答える
1

Direct3D では、すべてのリソース割り当てと管理を自分で処理する必要があることを理解していますが、OpenGL 仕様では、これはアプリケーションではなくドライバー/実装に任されています。

これにより、Direct3D 開発者は、アプリケーションに適した最適な割り当てと管理方法を使用できますが、余分な作業になります。

それぞれで典型的な「Hello World」アプリケーションを実行しましたが、Direct3D よりも OpenGL を好みますが、それは私の意見です。両方を試して、1 日か 2 日かけてそれぞれを学んだり遊んだりしてから、自分で決めてください。

于 2008-09-16T00:18:07.607 に答える
1

この質問にうまく答えるには、あなたに関するより多くの情報が必要です:

  • あなたのプログラミング能力は?

もしそれが高ければ、ゲームエンジンがもたらす追加機能(サウンド、物理学など)が必要な場合は、Ogre(厳密にレンダリングするオープンソースエンジン、IMHO)またはDelta3Dなどの別のオープンソースゲームエンジンから始めるでしょう。 .

エンジンを使用したくない場合は、OpenGL よりもはるかに高速に更新される Direct3D を使用します。すべての問題に立ち入るつもりはありませんが、OpenGL のバージョン 3.0 が SIGGRAPH で発表され、コミュニティのほとんどが非常に失望しました。Direct3D を使用すると、シェーダーやプログラマブル パイプラインのその他の用途を利用するのにはるかに有利な立場に立つことができます。

プログラミング能力がそれほど高くなく、プログラミングを学ぶためにこれを行っている場合は、OpenGL から始めます。これは、学習が容易であり、Web 上により多くのリソースがあるためです ( http://nehe.gamedev.netを参照してください)。例)。

于 2008-09-16T00:04:21.430 に答える
1

考慮すべきことは、プラットフォームの独立性の決定です。あなたのゲームを Windows に結び付けたいですか、それともいつか Mac OS X や Linux にリリースしたいですか。将来的に Linux や OS X をサポートすることにした場合は、OpenGL を使用する必要があります。

ゲームが Linux 向けに少なくとも半リリースされている場合、Linux コミュニティには多くの善意があるようです。

于 2008-09-12T18:52:11.910 に答える
0

趣味のプロジェクトなので、何をしたいのかを考える必要があります.「何かを学ぶこと」が経験の主要な部分になると思います.これは画像の一部しか表示しないためです。

サポートが充実していて、ドキュメントが読みやすく、SDK に適切なサンプルが付属しているため、私は Direct3D を使用します。物事をセットアップするための最初の急な学習曲線なしでキックスタートをしたい場合は、これらのサンプルをベースとして使用することもできます.

記録のために OpenGL から始め、約 1 か月後に Direct3d (当時のバージョン 7) に移行しました。Direct3D によって、自分が何をしたいのか、どのように設定しているのかをより意識する必要があることがわかりましたが、このレベルの理解を好みました。

重要なのは、IMO、どちらの方法を選択しても、段階的に進めて、定期的に画面に表示することです。何かが画面に表示されない理由はさまざまです (透明である、カメラがオブジェクトの内側にあるなど)。少し視覚的な報酬。

于 2008-09-17T18:01:17.183 に答える
0

これまでの回答から明らかなように、3D グラフィックス API には D3D または OpenGL のいずれかから始めることが合理的です。Triple-A ゲーム タイトルは両方のテクノロジを使用して開発されており、どちらにも長所と短所があります。

C++ にある程度習熟している場合は、どちらでもかまいませんが、選択する際には他にも考慮すべき点がいくつかあります。

  • 移植性: OpenGL (および OpenGL ES) は、Windows、Linux、OS X、iOS、Android、およびその他のシステムで利用できます。D3D/DirectX は、MS プラットフォームのみにロックします。
  • ゲーム入力: DirectX では、DirectInput API を使用してコントローラーにアクセスできます。OpenGL には、ここに相当するものはありません。
  • サウンド: DirectAudio はサウンドをサポートしますが、OpenGL には同等のものはありません (ただし、OpenAL がよく使用されます)。
  • 物理: ゲームのニーズによっては、高度な物理シミュレーションが必要になる場合があります。

通常、実際の「ゲームプレイ」の焦点は AI、戦闘、ストーリー展開などです。

まだ C++ の学習曲線を上っている場合 (価値はありますが、時間がかかります)、代わりに C# とOpenTKを使用できます。これにより、Ogre のような「ゲーム フレームワーク」の利点、OpenGL への適切な直接アクセス、およびゲーム ロジックにマネージ コード (および IDE) を使用する大きな利点が得られます。OpenTK は Mono を介したクロスプラットフォームであるため、コードは OS X と Linux でも実行できます。

楽しむ!

于 2011-06-25T01:52:34.533 に答える
0

まず、ウィキペディアの OpenGL と Direct3D の比較があります。

しかし、特に OpenGL 3.0 と DirectX 10 の最近の開発に照らして、いくつかの実用的な視点を聞きたいと思っています。

于 2008-09-02T09:34:31.350 に答える
0

エンジンを抽象化するための提案は、自分が何をしているかを理解していることを前提としています。グラフィックス用の優れた抽象化レイヤーを、まだ作成していない状態で作成することは困難です。

1つだけ選ぶことをお勧めします。抽象化レイヤーで潜在的に作業できるように十分に簡単に、または他のライブラリから十分に簡単に概念を理解できます。しかし、それを行うだけです。どちらが正しいかについては、それほど心配する必要はありません。どちらも優れた堅実なパフォーマーです。DX10 (Vista を使用している場合) には、シェーダー モデルが最新であるというわずかな利点があるかもしれませんが、これから始める人にとっては、それはまったく関係ないと思います。GL には、より細かい行列/ベクトル演算の一部が隠されているか、提供されているという利点があります (ただし、DX にもこれらのいくつかがあると思います)。

于 2008-09-12T18:43:12.680 に答える
0

オーガから始めないでください。

OpenGL GLUT (Win32)と1 つまたは2 つのチュートリアルから始めます。

Win32に移行して、このサイトを見てみましょう。これはかなり古いものですが、それでもかなり優れています。

于 2009-06-07T15:53:54.257 に答える
0

OpenGL は非常に簡単に使い始めることができ、一部の人がすでに書いているように、三角形を画面に表示し、そこからテクスチャやパーティクルなどに移動する作業は 1 日で完了します。

ただし、最終的な目標は何かという質問をするのは良いことだと思います。
それが単純なゲームで、スケルトン アニメーションがなく、単純な 3D である場合、OpenGL は間違いなく答えです。もっと上を目指していて、すべてのテクノロジーをゼロから開発することに時間を費やしたくない場合 (または、無料のライブラリを探してすべてをまとめる場合)、DX は良い選択です。DX11 が登場するまでは DX9c を選びます。

C++ 以外の言語をいじっても構わないのであれば、XNA 開発環境も検討する必要があります。XNA 開発環境はかなり成熟しており、優れたものになっています。

同様に、既存のエンジンを使用することは、必要なもののほとんどを適切な価格で提供し、自分で開発する時間を節約できることがわかっている場合に適しています。主な問題は、いくつかのゲーム エンジン (Ogre、Game Studio、Torque など) を調べてから、限られた経験に基づいて選択します - 先に進む前に、カジュアルな開発者からのレビューをできるだけ多く読んで、変更する場合は、コードを変更してください。

それが役に立ったことを願っています。

于 2008-09-15T18:22:14.077 に答える
-1

Ogre3D は、クロス プラットフォームのコーディングを行いたい場合や、すべてのレンダリングをエンジンに任せたい場合に最適です。OpenGL はクロス プラットフォームのコーディングにも適していますが、退屈な作業をすべて行う必要がありますが、より優れた制御が提供されます。

ゲームを他のプラットフォームに移植する場合に備えて、DirectX は避けます。将来の計画。DirectX 10 は OpenGL と比較していくつかの利点を提供する可能性がありますが、プロの開発者でない限り、それらを感じることはないと思います。それ以外の場合、Microsoft 支持者であれば、とにかく XNA を使用する必要があります。アマチュア開発者は、DirectX によって提供される制御を必要としないからです。

私はかなり長い間 OpenGL でコーディングしており、Ogre3D で数か月コーディングしていますが、他に何かが欲しいとは言えません。最近、DirectX 7 に関する本を手に入れましたが、面倒だと思います。状況が変わったのかもしれませんが、私が観察したところ、DirectX は魅力的ではなく、推定では Direct3D が魅力的だとは思いません。

于 2008-11-29T18:27:52.813 に答える
-4

私の意見では、OpenGL が最適です。

OpenGL SuperBible: Comprehensive Tutorial and Referenceは良いリファレンスです。

于 2011-06-25T01:17:36.750 に答える