2Dゲームの場合、Direct3DやOpenGLなどの3D APIを使用しない理由はありますか?


20

私はかなり長い間趣味のゲーム開発から脱出しました。私がやったとき、ほとんどの人はDirect Drawを使って2Dゲームを作成していました。私がやめた頃には、人々は、OpenGLまたはDirect3Dを使用した正射影が正しい方法だと言っていました。

特に携帯電話だけでなく、XNAプラットフォームでも2Dゲームの作成に戻ることを考えています。OpenGLを使用して何かを作成するには、3D開発に慣れるための(理想的には)小さな学習曲線が必要です。

それをスキップして、代わりにピクセルで塗りつぶす必要がある幅x高さのフレームバッファーがある2Dフレームワークで動作する理由はありますか?


この質問は実際には間違っています...つまり、Direct3DとOpenGLは実際には3D APIではありません。ハードウェアアクセラレーションを提供していますが、2Dと3Dの両方で提供されています。そこにはわずかな違いがあります。
-jacmoe

回答:


20

バックエンドで3Dレンダラーを使用するものを必ず使用する必要があります。しかし、より高いレベルのコードでは、Z軸も表示されないはずです。これらはすべて、下位レベルで抽象化する必要があります。ピクセルを直接操作している場合、おそらく何か間違ったことをしていることになります。

私自身のゲームでは、2Dオブジェクトを処理するための一連のクラスを作成しました。私のゲームロジックは、x座標とy座標のみを扱っていました。私のクラスは、回転、スケーリング、ブレンドモードなどのようなものも処理しました。

もちろん、既存の2Dライブラリも使用できます。Cocos2DはiPhoneで人気のあるライブラリです。すべてではありませんが、これらのライブラリのほとんどは、利用可能なアクセラレーションの恩恵を受けるように、低レベルの3D API上に構築されます。


XNAは舞台裏2D APIをどのように処理するかを私は聞いて興味があると思います
イアン

5
最終的にはすべて3Dです。Spritebatchは、2Dレンダリングの主力製品であり、シェーダー効果です。
drxzcl

インターフェースを実装から分離するための+1。
スティーブS

@Iainこれは、XNA作成者xnatoolkit.codeplex.comによって記述されたDirectX11のXNA 実装です。
ClassicThunder

8

3D APIを使用しない理由があります。

NA、北西EU、および日本のコンピューターのみがそれらをサポートしています...

たとえば、私はブラジルに住んでいます。妹のコンピューターは新しく、マルチコアプロセッサ、数GBのRAMを搭載していますが、OpenGLゲームは実行していません。

たとえば、私は自分のコンピューターでのみDwarf Fortressを再生できます(OpenGLを使用してASCIIグラフィックをレンダリングします)。

そして、これはブラジルだけの問題ではなく、世界中の人々に尋ねました、そしてそれは世界のいくつかの場所で一般的です...実際にOpenGLまたはDirect3D互換カードを所有している人口は少数です...

この少数派が企業からより多くの注目を集めるということだけです...

ただし、これらの「従来の」市場(NA、北西EU、日本)のみをターゲットにしている場合は、それを選択してください。

これらのダウン投票のための編集:明らかにあなたは同意しません、だから、誰ももうOpenGL 1.0をサポートしていないか、または唯一のOpenGL 1.0サポートを備えたくだらないVIAまたはSISチップ(または他の未知のまたはより悪いメーカー)を搭載したコンピューターを出荷するという証拠がありますか?

私の家にはそのようなマシンが2台あり、それらは新しいものです(両方とも複数のコアを持ち、両方とも2GBのRAMを持ち、両方とも2GHz以上のクロック周波数を持っています...)

私の大学には、そのような200台のマシンがあり、一部のデル製マシンもあります。

それは非常に単純で、GPUは高価で(Intelの粗末なものでさえ)、貧しい市場では贅沢であり、MS Wordを実行して電子メールを読むためにマシンを購入する人は、適切なグラフィックチップを搭載したマシンを購入することはありません特に50米ドルが1か月間食べ物を買わなければならない場合、50米ドルの安いものを購入できます。

あなたが第三世界の国を訪れたことがないなら、私がBSを言っていると言ってここに来ないでください、そして、第三世界の国の人々はゲームをしない、彼らはたくさんする、Osmosと言わないでください開発者はLinuxバージョンのリリースについて投稿し、多くの着信トラフィック(実際にはそのほとんど)がロシアからのものであると指摘しました。

ここブラジルで最も人気のあるゲームは、ソフトウェアモードで実行されるCounter-Strikeです。一部のLan-Housesは、GPUを搭載したマシンの10%しか持っていません。

私はこれに投稿するべきではなかった、私はそれがダウン投票を引き付けることを知っていた、私は他のゲームが5.0ではなくAllegro 4.4を使用する理由を説明するたびに、5.0がDirect Drawまたはソフトウェアモード私は、私が嘘つきのようなものだとか、OpenGLアクセラレーションの実際の利用可能性についてこの真実を言うのは馬鹿だと言っている多くの人々から多くの非難を受けています。

編集2:OpenGLを搭載したゲームをプレイして開発できるようにするには、両親や他の人にGeForce 8600を購入してもらうように頼まなければなりませんでした(これはMass Effect 1や他のUT3を実行できる最も安いカードでした) -エンジンゲーム)、彼らは私に1つ買ったが、今では私は他の贈り物を二度と受け取らないで、誕生日プレゼントでさえ、それがどれくらい高価だったので、私はこのカードが3年または4年以上働くことを願っています...

編集3:
実用的な例:Eletronic Artsは、2Dグラフィックスに3Dアクセラレーションを使用するUltima Onlineの新しいクライアントを作成しました...結果:途方もなく低いフレームレートに苦情を訴える多くのプレイヤーと、新しいクライアント(古いクライアントの使用を継続できるようになりました)

EDIT 4 2015:この回答は、主に歴史的遺物として残されます。現在、第三世界の国々でも非常に粗末なチップを搭載したコンピューターの量は少なく、特にオフィス向けのコンピューターではまだ存在していますが、そうではありませんもはや一般的で、ソフトウェアモードAPIを使用する価値はないと思います。OpenGLベースのAPIが今の方法です。


3
現在、3Dをサポートしていないチップはありません。Windowsが提供するものにはOpenGLサポートが付属していないため、ほとんどの場合、ドライバーを更新するだけで済みます。最も一般的ながらくたGPUはIntel GMAのもので、基本的なOpenGlサポートもあります。
アクセルグナイティング

1
繰り返しますが、ここのチップはIntel GMAのものよりも悪いです。そして、はい、一部の修正されたドライバーは問題を解決しますが、ユーザーがそれについて知ることを期待することはできません。
スピーダー

実用的な例:Eletronic Artsは、2Dグラフィックスに3Dアクセラレーションを使用するUltima Onlineの新しいクライアントを作成しました...結果:多くのプレイヤーがフレームレートがとてつもなく低く、新しいクライアントの使用を強制する決定でEAが後退している(今では古いものを使用し続けることができます)
スピーダー

1
私の話によれば、新しいクライアントは2008年のものです。2008年の人々はOpenGLクライアントを嫌い、1997年のクライアントを使用するようになりました。
スピーダー

1
人々がドライバーを更新しないからといって、コンピューターがOpenGLとDirect3Dをサポートしていないわけではありません。OPは、OpenGL / Direct3Dの互換性を確認するだけです。存在しない場合は、ユーザーにドライバーを更新するように指示する必要があります。これは、ケースの98.6%で機能し、おそらく第2および第3の世界でも機能します。しかし、真剣に、OpenGL / Direct3Dをサポートしていない購入可能なコンピューターにリンクできますか?
アヴィ

3

いいえ、ありません。3Dレンダラーを使用すると、より優れた効果と高速レンダリングが得られます。例えば、ここにオーブの効果は、3Dシェーダに大きく傾く、でも多くの点で、彼らしている2Dエフェクトのに-私は(1回の週末に)数週間前に作られた2Dゲームです。同様に、私はこのゲームで利用可能なレンダリングテクノロジーを広範に使用しました。そこでは3つまたは4つの異なるピクセルシェーダーエフェクトが使用されており、そのすべてがより速く開発し、よりきれいになりました。

3Dを受け入れて愛しますが、1つ少ない軸で愛します。


2

通常、3D APIが最適です。今日のGPUは3Dグラフィックスをレンダリングするように設計されているため、非常に安定したパフォーマンスが保証されます。ZorbaTHutが言ったように、3Dルートを使用すると、ピクセルシェーダーなどを活用できます。

本当にそれほど多くの2D APIはありません。DirectDrawは廃止され、ほとんどの2D /ベクターベースのライブラリはOpenGLまたはDirect3Dを使用してレンダリングを実行します。最新のUIツールキットでさえ、3D APIを利用してレンダリングと合成を行っています。たとえば、WPF(Microsoftの最新のUIフレームワーク)を取り上げます。レンダリングにはDirect3Dを使用します。


2

DirectDrawを使用すると、OpenGLやD3Dよりもずっと高速になるように、くだらない/存在しない3Dアクセラレーションと更新されていないドライバーを備えた驚くべき数の本当に古いマシンがまだあります。他のプラットフォームをサポートするためにOpenGLで新しいレンダリングバックエンドを作成しようとしたときに、約10年前の2Dマルチプレイヤーゲームの作業中にこれを経験しました。多くのプレイヤーが、フレームレートが低いためOpenGLモードは再生できないと報告しました。これはブラジルのポスターにも同意しますが、これはアメリカやヨーロッパ以外ではより一般的ですが、これらの場所でも同様です。

携帯電話またはXNAをターゲットにしている場合、間違いなく3Dを使用してください。しかし、どこでも、どのPCでも実行できるゲームを作りたいのであれば、DDrawを使い続けたいと思います。


1

私が考えることができる唯一のことは、2D APIを介して3D APIを使用すると、いくつかの基本的な複雑さが追加されるということです。少なくともOpenGLでは、テクスチャをロードして管理する必要があります。テクスチャを描画するときは、ジオメトリを正しくする必要があります。ラッパーレイヤーはこれらの問題を解決します。

とはいえ、3Dグラフィックスのバックエンドを使用することには、欠点よりも利点があるように思えるので、私に聞いたら、努力する価値は十分にあります。


1

ゲームが非常にシンプルで、特にネットブックや古いラップトップ(3Dアクセラレーションがない、または非常に最小限-古いIntel統合グラフィックスなど)でローエンドマシンでゲームを実行したい場合は、純粋なゲームを検討する価値があります2Dフレームバッファーアプローチ

ゲームが少なくともローエンドのATi / NVidiaカード/チップを必要とすることに満足している場合、3D APIを使用すると、多くのクールな処理(アルファブレンディング、スケーリング/回転など)が可能になります。純粋なソフトウェアレンダラーでうまく/効率的に行うのは難しいでしょう。

また、3Dハードウェア(およびバイリニアフィルタリング/アルファブレンディング)が関係する場合、「純粋な2D」で非常に単純ないくつかのことがより面白くなることに注意してください。事前乗算されたアルファの概念を理解します。また、たとえば、ズーム/回転可能なビューが必要な場合に、2Dタイルマップ内のタイル間の継ぎ目をどのように処理するかについても考えます。

また、充填率が制限されていることを忘れないでください。そして、2Dでこれらの限界に達するのは驚くほど簡単です。ポリゴンはあまりないかもしれませんが、アルファブレンドされた視差レイヤー、パーティクル、またはポストエフェクトがたくさん必要な場合は、かなりハイエンドの3Dゲームと同じくらい多くのピクセルを簡単に塗りつぶすことができます。

しかし、一般的に、3Dハードウェアは素晴らしいです、そして、加算ブレンドはあなたの友人です:)

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