Exemplo n.º 1
0
        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();
        }