protected override void OnRenderFrame(FrameEventArgs e)
{
base.OnRenderFrame(e);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
Matrix4 modelview = Matrix4.LookAt(0, 0, 1,
0, 0, 0,
0, 1, 0);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadMatrix(ref modelview);
GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
GL.Ortho(0, 320, 0, 480, 1, 2);
GL.Begin(BeginMode.Quads);
GL.Color3(0f, .8f, 0f);
GL.Vertex2(0, 10);
GL.Vertex2(10, 10);
GL.Vertex2(10, 0);
GL.Vertex2(0, 0);
GL.End();
SwapBuffers();
}
LootAt関数の呼び出しについての私の理解は、その後、私のカメラが原点の1ユニット上に浮いて、原点を真下に見下ろすということです。したがって、最初に緑色の正方形をレンダリングしたとき、原点がそこにあるため、ウィンドウの中央近くにあると予想しました(頂点の1つは(0,0)です)。しかし、そうではなく、左下隅のウィンドウにありました。したがって、LoadIdentityとOrthoroが呼び出されたため、すべての頂点がウィンドウの左下隅へのオフセットとしてレンダリングされ、目とカメラの概念が適用されなくなるのではないかと思いました。ただし、目の開始座標をたとえば(2,2)に配置すると、緑色の正方形が平行移動しているように見えます。だから、目/カメラのコンセプトはまだ当てはまると思います。
だから今私は混乱しています...
何が起こっているのか説明してもらえますか?
ありがとう