OpenGLの - オルト投射行列、glViewport
-
26-09-2019 - |
質問
私はトラブルどのようにこれらの仕事のまわりで私の頭をラップを抱えています。まず、2Dゲームに射影行列は、右、左、右、上、下マッチングウィンドウとオルトとして設定する必要がありますか?ウィンドウをリサイズしたときにでも、私はちょうどglViewportではなく、射影行列を変更する必要がありますか?そして、どのように私は、アスペクト比を維持していますか?
誰かが、私はそれをよりよく理解できるように、2D orthographicalゲームでは、これら二つの目的を説明してもらえますか?
OpenGLは、2Dセットアップで役に立たないものをたくさんやっているように、それは感じています。画像が既にある場合にのみ、彼らが既にglViewportによるに変換バックことがNDCに頂点座標を変換、ラスタライズおよびフラグメントを算出する。
また、どのようにglViewportは?
ないことを私たちは私たち自身の行列を作るために持ってではなく、私たち自身の計算レガシーフリーのOpenGLで来ます感謝します。
解決
DOは何GLにあなたの入力し、何それが出力を混同しない。
あなたはオルソ行列を計算するために使用するパラメータは、ものであることと相関するあなたのの入力の。射影行列の出力は常に[-1:1]×[-1:1]×[-1:1]キューブ
ビューポートは、あなたのレンダーターゲットの座標にそのキューブを変換します。だから一般的だあなたは(まあ、およびフレームバッファ自体)新しいウィンドウサイズに合わせて変更したい。
はい、GLは、2Dレンダリングパスのために役に立たないものをたくさん行います。これは、すべての後の3D APIです...
私はあなたが私が先に述べたキューブに限り、あなたの頂点シェーダ出力として2D変換を、行うためにビルド行列に持っていないことを言って終了します。あなたは、ビューポートの右上隅を書きたい場合、あなたは常に直接あなたの頂点は、(0,0)(0,1)(1,0)(1,1)と、単に出力として渡すことができます。
他のヒント
わからないどのような言語あなたがOpenGLを使用しているが、あなたはCを探しているなら、このサイト++、ます。http:// nehe.gamedev.net/ をほとんどカバーするすべてのものと基本的なゲームや3Dエフェクトまでずっと「Hello World」のような単純なからチュートリアルをアップしています。
希望は、それが役立ちます。