OGLRenderer.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using System.Collections.Concurrent;
  3. namespace Ryujinx.Graphics.Gal.OpenGL
  4. {
  5. public class OGLRenderer : IGalRenderer
  6. {
  7. public IGalBlend Blend { get; private set; }
  8. public IGalFrameBuffer FrameBuffer { get; private set; }
  9. public IGalRasterizer Rasterizer { get; private set; }
  10. public IGalShader Shader { get; private set; }
  11. public IGalTexture Texture { get; private set; }
  12. private ConcurrentQueue<Action> ActionsQueue;
  13. public OGLRenderer()
  14. {
  15. Blend = new OGLBlend();
  16. FrameBuffer = new OGLFrameBuffer();
  17. Rasterizer = new OGLRasterizer();
  18. Shader = new OGLShader();
  19. Texture = new OGLTexture();
  20. ActionsQueue = new ConcurrentQueue<Action>();
  21. }
  22. public void QueueAction(Action ActionMthd)
  23. {
  24. ActionsQueue.Enqueue(ActionMthd);
  25. }
  26. public void RunActions()
  27. {
  28. int Count = ActionsQueue.Count;
  29. while (Count-- > 0 && ActionsQueue.TryDequeue(out Action RenderAction))
  30. {
  31. RenderAction();
  32. }
  33. }
  34. }
  35. }