private void OnRender(object sender, FrameEventArgs e) { // Reset the view GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit | ClearBufferMask.StencilBufferBit); _updateTimeAccumulator += e.Time; var partialTicks = _updateTimeAccumulator / TargetUpdatePeriod; // Reload the projection matrix var aspectRatio = Width / (float)Height; var scale = new Vector3(4 * (1 / _zoom), -4 * (1 / _zoom), 4 * (1 / _zoom)); var rotX = _prevRotation.X + (_rotation.X - _prevRotation.X) * partialTicks; var rotY = _prevRotation.Y + (_rotation.Y - _prevRotation.Y) * partialTicks; var mProjection = Matrix4.CreatePerspectiveFieldOfView(MathHelper.PiOver4, aspectRatio, 1, 1024); var mModel = Matrix4.LookAt(0, 128, 256, 0, 0, 0, 0, 1, 0); var mTranslate = Matrix4.CreateTranslation(_translation.X, _translation.Y, 0); var mScale = Matrix4.CreateScale(scale); var mRotX = Matrix4.CreateRotationX((float)(rotX / 180 * Math.PI)); var mRotY = Matrix4.CreateRotationY((float)(rotY / 180 * Math.PI)); var mView = mRotY * mRotX * mScale * mTranslate; _renderManager.Render(mModel, mView, mProjection); // Swap the graphics buffer SwapBuffers(); }
private void OnRender(object sender, FrameEventArgs e) { // Reset the view GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit | ClearBufferMask.StencilBufferBit); _updateTimeAccumulator += e.Time; var partialTicks = _updateTimeAccumulator / TargetUpdatePeriod; // Reload the projection matrix var aspectRatio = Width / (float)Height; var zoom = (float)(_prevZoom + (_zoom - _prevZoom) * partialTicks); var scale = new Vector3(4 * (1 / zoom), -4 * (1 / zoom), 4 * (1 / zoom)); var rotX = _prevRotation.X + (_rotation.X - _prevRotation.X) * partialTicks; var rotY = _prevRotation.Y + (_rotation.Y - _prevRotation.Y) * partialTicks; var transX = _prevTranslation.X + (_translation.X - _prevTranslation.X) * partialTicks; var transY = _prevTranslation.Y + (_translation.Y - _prevTranslation.Y) * partialTicks; var mProjection = Matrix4.CreatePerspectiveFieldOfView(MathHelper.PiOver4, aspectRatio, 1, 1024); var mModel = Matrix4.LookAt(0, 128, 256, 0, 0, 0, 0, 1, 0); var mTranslate = Matrix4.CreateTranslation((float)transX, (float)transY, 0); var mScale = Matrix4.CreateScale(scale); var mRotX = Matrix4.CreateRotationX((float)(rotX / 180 * Math.PI)); var mRotY = Matrix4.CreateRotationY((float)(rotY / 180 * Math.PI)); var mLocalTranslate = Matrix4.CreateTranslation(-_renderManager.SideLength * 8 + 1, 0, -_renderManager.SideLength * 8 + 1); var mView = mLocalTranslate * mRotY * mRotX * mScale * mTranslate; _renderManager.Render(mModel, mView, mProjection); // Swap the graphics buffer SwapBuffers(); // var err = GL.GetError(); // if (err != ErrorCode.NoError) // Lumberjack.Error(err.ToString()); }