1

最新のOpenGLでウィンドウ全体を正方形で埋めるために必要な変換を決定するにはどうすればよいですか。たとえば、800 x 600 のウィンドウと、-1 と 1 から伸びる 2 つの三角形の頂点を持つ座標があるとします。OpenGL の座標は -1 から 1 に伸びるため、これらの座標は 800 x 600 のウィンドウを埋めます。ただし、標準の MVP 変換を使用したい場合はどうすればよいでしょうか? ウィンドウ全体を埋めるために何をする必要があるかを判断するにはどうすればよいですか。次のコードを検討してください。

glm::mat4 projectionMatrix = glm::perspective(60.0f, 4.f/3.f, 0.1f, 100.0f); // gluPerspective equivalent for those who may not know about glm
glm::mat4 viewMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -5.0f));;
glm::mat4 modelMatrix = glm::mat4(1.0f);

同じ座標で。ウィンドウの真ん中のどこかに四角形が表示されます。射影行列を変更しないと仮定すると、View 行列と Model 行列にどのような変更を加える必要がありますか? 行列の計算は理解していますが、それがウィンドウ座標自体とどのように関係しているかはわかりません。

誰かがこれを理解するのを手伝ってくれますか?

4

1 に答える 1

0

2D 要素 (HUD など) の場合、通常は、左 = 0、右 = 幅、下 = 0、上 = 高さの正射行列を設定します。ここで、幅と高さはウィンドウのサイズです。znear = -1 および zfar = 1。

次に、長方形の頂点は 0、0、幅、高さになります。

それはあなたが望むものですか?画面いっぱいの四角形に遠近法マトリックスを使用する理由がわかりません。

于 2014-02-12T01:30:11.360 に答える