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)处,绿色方块似乎会平移。所以这让我觉得眼睛/相机的概念仍然适用。
所以现在我很困惑...
你能向我解释发生了什么事吗?
谢谢