예제 #1
0
        public void Render()
        {
            GL.Viewport(0, 0, Width, Height);

            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

            if (CanRender)
            {
                _shader.Bind();

                GL.UniformMatrix4(20, false, ref _projection);

                Scene?.Render(_camera);
            }

            GL.Flush();

            FrameRendered?.Invoke();
        }
예제 #2
0
 public void ResumeEmulation()
 {
     AudioHandler.Resume();
     if (!string.IsNullOrEmpty(FileName))
     {
         if (ROM?.Header == null)
         {
             byte[] data = File.ReadAllBytes(FileName);
             LoadRom(data);
         }
         ROM.LoadSRAM();
         _isExecuting = true;
         while (_isExecuting)
         {
             RunFrame(false);
             Renderer.RenderBuffer(PPU.GetPixels());
             APU.SetSamples(AudioHandler.SampleBufferL, AudioHandler.SampleBufferR);
             AudioHandler.NextBuffer();
             FrameRendered?.Invoke(this, null);
         }
     }
 }
예제 #3
0
 protected virtual void OnFrameRendered(FrameRenderedEventArgs e)
 {
     FrameRendered?.Invoke(this, e);
 }
예제 #4
0
 protected virtual void OnFrameRendered()
 {
     FrameRendered?.Invoke(this, EventArgs.Empty);
 }