2Dゲームに最新のOpenGLを使用する方法


9

3D用の「モダンな」OpenGL(3.0+)チュートリアルをたくさん見つけましたが、2Dゲーム開発にそれを使用する方法に関する情報を探したところ、ほとんど何も見つかりませんでした。2D gamedevにOpenGLを使い始めるにはどうすればよいですか?

具体的には、以下のトピックに対する回答を得ることに興味があります。

  • さまざまなマトリックスを正投影に設定するにはどうすればよいですか?
  • シェーダーは2Dアプリケーションで3Dアプリケーションと同じくらい頻繁に使用されますか?もしそうなら、2D設定での目的は何ですか?
  • 2Dゲームに明らかに必要な膨大な数のテクスチャをどのように処理すればよいですか?

比較的幅広い質問をお詫び申し上げますが、検索に長い時間を費やしており、最新のOpenGLに適用される有用な情報はほとんど見つかりませんでした。

回答:


11
  • さまざまなマトリックスを正投影に設定するにはどうすればよいですか?

あなたの目標は2Dですよね?したがって、投影は必要ありません。投影は、3Dの世界を2Dの平面に凝縮する行為です。シェーダーを設定して、すべての頂点のZ座標をデフォルトにし、0.0設定する必要があります。

ただし、X座標とY座標にはスケールマトリックスを使用できます。-10.010.0なるようにスケーリング-1.01.0ます。参考のために、それを行うためのマトリックスは次のとおりです。

0.1   0.0   0.0
0.0   0.1   0.0
0.0   0.0   1.0
  • シェーダーは2Dアプリケーションで3Dアプリケーションと同じくらい頻繁に使用されますか?もしそうなら、2D設定での目的は何ですか?

彼らはすることができます。ピクセル単位のライティングに引き続き使用でき、オブジェクトに偽の深さを与えます。また、テクスチャ効果、水の効果、画像生成にも使用できます...ちょっとしたトリックで物理演算を実行するために使用することもできます。

つまり、3Dで使用されるすべてのものです。適用方法が異なるだけでなく、文書化もされていません。2Dゲームをプレイしている人は、リアルな効果がなければ、おそらくあなたの事件に巻き込まれることはないでしょうから、それも必須ではありません。

とにかく、スプライトをレンダリングするには、シェーダーの基本を知っておく必要があります。

  • 2Dゲームに明らかに必要な膨大な数のテクスチャをどのように処理すればよいですか?

3Dと同じように。テクスチャオブジェクト、PBO、およびテクスチャアトラスの束。おそらくいくつかの構造/クラス、そして頭痛も同様です。それは「アセットマネジメント」とかそういうものだと思います。

  • 2D gamedevを使い始めるにはどうすればよいですか?

おそらくそこにいくつかのチュートリアルがあります。ただし、3Dバージョンの方が一般的であるため、OpenGLを3Dで学習し、その学習内容を2D版に適用することをお勧めします。3Dと2Dはよく似ていますが、2DはZ座標を追跡しません。


5
2Dの場合でも、正投影とさまざまなZ座標を使用してZバッファリングを行うことができます。それ以外の場合は、ペインタのアルゴリズムを自分で実行し、正しい順序で描画する必要があります。
congusbongus 2013

@congusbongus実際には、透明性を重視している場合は、おそらく自分で画家のアルゴリズムを実行する必要があります...
Panda Pajama
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.