SDLGLVisibleSurface.hh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef SDLGLVISIBLESURFACE_HH
  2. #define SDLGLVISIBLESURFACE_HH
  3. #include "SDLVisibleSurfaceBase.hh"
  4. namespace openmsx {
  5. /** Visible surface for SDL openGL renderers
  6. */
  7. class SDLGLVisibleSurface final : public SDLVisibleSurfaceBase
  8. {
  9. public:
  10. SDLGLVisibleSurface(unsigned width, unsigned height,
  11. Display& display,
  12. RTScheduler& rtScheduler,
  13. EventDistributor& eventDistributor,
  14. InputEventGenerator& inputEventGenerator,
  15. CliComm& cliComm,
  16. VideoSystem& videoSystem);
  17. ~SDLGLVisibleSurface() override;
  18. static void saveScreenshotGL(const OutputSurface& output,
  19. const std::string& filename);
  20. // OutputSurface
  21. void saveScreenshot(const std::string& filename) override;
  22. // VisibleSurface
  23. void finish() override;
  24. std::unique_ptr<Layer> createSnowLayer() override;
  25. std::unique_ptr<Layer> createConsoleLayer(
  26. Reactor& reactor, CommandConsole& console) override;
  27. std::unique_ptr<Layer> createOSDGUILayer(OSDGUI& gui) override;
  28. std::unique_ptr<OutputSurface> createOffScreenSurface() override;
  29. private:
  30. struct VSyncObserver : openmsx::Observer<Setting> {
  31. void update(const Setting& setting) override;
  32. } vSyncObserver;
  33. SDL_GLContext glContext;
  34. };
  35. } // namespace openmsx
  36. #endif