renderer_base.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <memory>
  6. #include "common/common_types.h"
  7. #include "video_core/rasterizer_interface.h"
  8. class EmuWindow;
  9. class RendererBase : NonCopyable {
  10. public:
  11. /// Used to reference a framebuffer
  12. enum kFramebuffer {
  13. kFramebuffer_VirtualXFB = 0,
  14. kFramebuffer_EFB,
  15. kFramebuffer_Texture
  16. };
  17. virtual ~RendererBase() {
  18. }
  19. /// Swap buffers (render frame)
  20. virtual void SwapBuffers() = 0;
  21. /**
  22. * Set the emulator window to use for renderer
  23. * @param window EmuWindow handle to emulator window to use for rendering
  24. */
  25. virtual void SetWindow(EmuWindow* window) = 0;
  26. /// Initialize the renderer
  27. virtual bool Init() = 0;
  28. /// Shutdown the renderer
  29. virtual void ShutDown() = 0;
  30. // Getter/setter functions:
  31. // ------------------------
  32. f32 GetCurrentFPS() const {
  33. return m_current_fps;
  34. }
  35. int GetCurrentFrame() const {
  36. return m_current_frame;
  37. }
  38. VideoCore::RasterizerInterface* Rasterizer() const {
  39. return rasterizer.get();
  40. }
  41. void RefreshRasterizerSetting();
  42. protected:
  43. std::unique_ptr<VideoCore::RasterizerInterface> rasterizer;
  44. f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer
  45. int m_current_frame = 0; ///< Current frame, should be set by the renderer
  46. private:
  47. bool opengl_rasterizer_active = false;
  48. };