private void OnKeyDown(object sender, KeyboardKeyEventArgs e) { switch (e.Key) { case Key.Escape: Close(); break; case Key.R: _camera.ResetToDefault(); break; case Key.F5: _camera.SetBehavior(new ThirdPersonBehavior()); break; case Key.F6: _camera.SetBehavior(new FreeLookBehavior()); break; case Key.F7: _camera.SetBehavior(new FreeLookAlignedBehavior()); break; case Key.F11: _program = _programOdd; break; case Key.F12: _program = _programEqual; break; case Key.Number1: SetBuffer(GBufferType.Position); break; case Key.Number2: SetBuffer(GBufferType.Normal); break; case Key.Number3: SetBuffer(GBufferType.Diffuse); break; case Key.Number4: SetBuffer(GBufferType.Aux); break; } }
private void OnLoad(object sender, EventArgs e) { // maximize window WindowState = WindowState.Maximized; // load program _programOdd = ProgramFactory.Create <GeodesicProgramOdd>(); _programEqual = ProgramFactory.Create <GeodesicProgram>(); _program = _programOdd; // create icosahedron and set model matrix _modelMatrix = Matrix4.CreateScale(1); _icosahedron = new Icosahedron(5); _icosahedron.UpdateBuffers(); // bind it to an vao _vao = new VertexArray(); _vao.Bind(); _vao.BindElementBuffer(_icosahedron.IndexBuffer); _vao.BindAttribute(_program.Position, _icosahedron.VertexBuffer); // set some reasonable default state GL.ClearColor(Color4.Black); GL.Enable(EnableCap.DepthTest); // backface culling is done in the tesselation control shader GL.Enable(EnableCap.CullFace); GL.CullFace(CullFaceMode.Back); GL.PatchParameter(PatchParameterInt.PatchVertices, 3); // lighting stuff _deferredRenderer = new DeferredRenderer(); // enable controls _variableHandler.Enable(this); }