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 состоит в том, что после этого моя камера будет парить на одну единицу над источником, смотря прямо вниз в точке начала координат.Поэтому, когда я впервые отобразил свой зеленый квадрат, я ожидал, что он будет находиться ближе к центру моего окна, поскольку именно там находится источник (одна из его вершин - (0,0)).Но это не так, это было в левом нижнем углу окна.Тогда я подумал, что, возможно, из-за вызовов LoadIdentity и Orthoro все вершины будут отображаться с точки зрения смещения в левом нижнем углу моего окна и что концепции моего глаза и камеры больше не будут применяться.Однако, если я помещу начальные координаты моего глаза в скажем (2,2), зеленый квадрат, кажется, переместится.Это заставляет меня думать, что концепция глаз / камера все еще применима.
Так что теперь я просто растерялся ...
Можете ли вы объяснить мне, что происходит?
Спасибо