Пример #1
0
 protected override void OnRenderFrame(FrameEventArgs e)
 {
     // called once per frame; render
     rayTracer.Tick();
     if (terminated)
     {
         Exit();
         return;
     }
     // convert Game.screen to OpenGL texture
     GL.BindTexture(TextureTarget.Texture2D, screenID);
     GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba,
                   rayTracer.screen.width, rayTracer.screen.height, 0,
                   OpenTK.Graphics.OpenGL.PixelFormat.Bgra,
                   PixelType.UnsignedByte, rayTracer.screen.pixels
                   );
     // clear window contents
     GL.Clear(ClearBufferMask.ColorBufferBit);
     // setup camera
     GL.MatrixMode(MatrixMode.Modelview);
     GL.LoadIdentity();
     GL.MatrixMode(MatrixMode.Projection);
     GL.LoadIdentity();
     // draw screen filling quad
     GL.Begin(PrimitiveType.Quads);
     GL.TexCoord2(0.0f, 1.0f); GL.Vertex2(-1.0f, -1.0f);
     GL.TexCoord2(1.0f, 1.0f); GL.Vertex2(1.0f, -1.0f);
     GL.TexCoord2(1.0f, 0.0f); GL.Vertex2(1.0f, 1.0f);
     GL.TexCoord2(0.0f, 0.0f); GL.Vertex2(-1.0f, 1.0f);
     GL.End();
     // tell OpenTK we're done rendering
     SwapBuffers();
 }
Пример #2
0
        // tick: renders one frame
        public void Tick()
        {
           // scene.lights[0].position += new Vector3(1f,0,0);

            raytracer.Tick();

            KeyboardState keystate = Keyboard.GetState();

            if (keystate.IsKeyDown(Key.Number1))
            {
                raytracer.aa = 1;
            }
            if (keystate.IsKeyDown(Key.Number2))
            {
                raytracer.aa = 2;
            }
            if (keystate.IsKeyDown(Key.Number3))
            {
                raytracer.aa = 3;
            }
            if (keystate.IsKeyDown(Key.Left))
            {
                cam.xRotation -= 8;
                if (cam.xRotation < 0)
                    cam.xRotation += 360;
                cam.UpdateScreen();
            }
            if (keystate.IsKeyDown(Key.Right))
            {
                cam.xRotation += 8;
                if (cam.xRotation > 359)
                    cam.xRotation -= 360;
                cam.UpdateScreen();
            }
            if (keystate.IsKeyDown(Key.Up))
            {
                cam.yRotation -= 8;
                if (cam.yRotation < 0)
                    cam.yRotation += 360;
                if (cam.yRotation > 90 && cam.yRotation < 270)
                    cam.yRotation = 270;
                cam.UpdateScreen();
            }
            if (keystate.IsKeyDown(Key.Down))
            {
                cam.yRotation += 8;
                if (cam.yRotation > 359)
                    cam.yRotation -= 360;
                if (cam.yRotation > 90 && cam.yRotation < 270)
                    cam.yRotation = 90;
                cam.UpdateScreen();
            }
            if (keystate.IsKeyDown(Key.W))
            {
                cam.position += 0.1f * Vector3.Normalize(new Vector3(cam.direction.X, 0, cam.direction.Z));
            }
            if (keystate.IsKeyDown(Key.D))
            {
                cam.position += 0.1f * Vector3.Normalize(new Vector3(cam.right.X, 0, cam.right.Z));
            }
            if (keystate.IsKeyDown(Key.A))
            {
                cam.position += 0.1f * Vector3.Normalize(new Vector3(cam.left.X, 0, cam.left.Z));
            }
            if (keystate.IsKeyDown(Key.S))
            {
                cam.position -= 0.1f * Vector3.Normalize(new Vector3(cam.direction.X, 0, cam.direction.Z));
            }
            if (keystate.IsKeyDown(Key.Space))
            {
                cam.position.Y -= 0.15f;
            }
            if (keystate.IsKeyDown(Key.ShiftLeft))
            {
                cam.position.Y += 0.15f;
            }
            if (keystate.IsKeyDown(Key.R))
            {
                cam.Initialize();
            }
            if (keystate.IsKeyDown(Key.F))
            {
                if (cam.fov < 179)
                {
                    cam.fov++;
                    cam.UpdateScreen();
                }
            }
            if (keystate.IsKeyDown(Key.G))
            {
                if (cam.fov > 0)
                {
                    cam.fov--;
                    cam.UpdateScreen();
                }
            }
            if (keystate.IsKeyDown(Key.T))
            {
                Console.WriteLine("TestOutput");
            }
        }