6

これらがどのように機能するかについて頭を悩ませています。まず、2Dゲームでは、投影行列をオルソとして設定し、左、右、上、下をウィンドウに一致させる必要があります。しかし、ウィンドウのサイズが変更された場合、投影行列ではなく、glViewportを変更する必要がありますか?また、アスペクト比を維持するにはどうすればよいですか?

私がそれをよりよく理解できるように、誰かが2D正書法ゲームでこれら2つの目的を説明できますか?

OpenGLが2Dセットアップで多くの役に立たないことをしているように感じます。画像がすでに存在する場合にフラグメントをラスター化して計算し、頂点座標をNDCに変換して、glViewportによって既に存在する場所に変換し直します。

また、レガシーフリーのOpenGLで、glViewportが行う独自の計算ではなく、独自のマトリックスを作成する必要があるのはなぜですか?

ありがとう。

4

2 に答える 2

5

GLに入力する内容と出力する内容を混同しないでください。

オルソ行列の計算に使用するパラメーターは、入力に相関するパラメーターです。射影行列の出力は、常に[-1:1] x [-1:1] x [-1:1]キューブです。

ビューポートは、その立方体をレンダリングターゲット座標に変換します。したがって、これは通常、新しいウィンドウサイズ(まあ、それとフレームバッファ自体)に一致するように変更したいものです。

はい、GLは2Dレンダリングパスに対して多くの役に立たないことを行います。結局のところ、これは3DAPIです...

最後に、頂点シェーダーが前述のキューブに出力する限り、2D変換を行うためにマトリックスを作成する必要はありません。ビューポートの右上隅を書き込みたい場合は、いつでも頂点を(0,0)(0,1)(1,0)(1,1)として直接渡し、それを出力することができます。

于 2010-09-01T17:01:05.087 に答える
-2

OpenGLを使用している言語はわかりませんが、このサイトでC ++を探している場合は、http://nehe.gamedev.net/がほぼすべてを網羅しており、「HelloWorld」から「HelloWorld」までのチュートリアルがあります。基本的なゲームと3D効果。

それが役に立てば幸い

于 2010-09-01T16:02:41.113 に答える