protected override void OnRenderFrame(FrameEventArgs e) { camera.Update(); if (Settings.Instance.UpdateCamera) { frustum.Update(camera.CameraMatrix); } if (Settings.Instance.UpdateCamera) { world.Update((int)Math.Floor(camera.Position.X) >> Chunk.BPC, (int)Math.Floor(camera.Position.Z) >> Chunk.BPC); } GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); if (Settings.Instance.Wireframe) { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); GL.Disable(EnableCap.CullFace); } else { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); GL.Enable(EnableCap.CullFace); } texture.Bind(TextureUnit.Texture0); aoTexture.Bind(TextureUnit.Texture1); program.Bind(); program.SetUniform("mvp", false, ref camera.CameraMatrix); program.SetUniform("fog_color", Color4.DarkSlateGray); program.SetUniform("enable_fog", Settings.Instance.Fog ? 1 : 0); program.SetUniform("pos", camera.Position); program.SetUniform("ao", Settings.Instance.AmbientOcclusion ? 1 : 0); world.Draw(frustum); hudprogram.Bind(); GL.DrawArrays(PrimitiveType.Points, 0, 1); base.OnRenderFrame(e); SwapBuffers(); }