openMSX
|
Visible surface for SDL openGL renderers. More...
#include <SDLGLVisibleSurface.hh>
Public Member Functions | |
SDLGLVisibleSurface (int width, int height, Display &display, RTScheduler &rtScheduler, EventDistributor &eventDistributor, InputEventGenerator &inputEventGenerator, CliComm &cliComm, VideoSystem &videoSystem) | |
~SDLGLVisibleSurface () override | |
void | saveScreenshot (const std::string &filename) override |
Save the content of this OutputSurface to a PNG file. More... | |
void | finish () override |
When a complete frame is finished, call this method. More... | |
std::unique_ptr< Layer > | createSnowLayer () override |
std::unique_ptr< Layer > | createConsoleLayer (Reactor &reactor, CommandConsole &console) override |
std::unique_ptr< Layer > | createOSDGUILayer (OSDGUI &gui) override |
std::unique_ptr< OutputSurface > | createOffScreenSurface () override |
Create an off-screen OutputSurface which has similar properties as this VisibleSurface. More... | |
void | fullScreenUpdated (bool fullScreen) override |
Public Member Functions inherited from openmsx::SDLVisibleSurfaceBase | |
void | updateWindowTitle () override |
bool | setFullScreen (bool fullscreen) override |
~SDLVisibleSurfaceBase () override | |
Public Member Functions inherited from openmsx::SDLOutputSurface | |
SDLOutputSurface (const SDLOutputSurface &)=delete | |
SDLOutputSurface & | operator= (const SDLOutputSurface &)=delete |
SDL_Surface * | getSDLSurface () const |
SDL_Renderer * | getSDLRenderer () const |
SDLDirectPixelAccess | getDirectPixelAccess () |
Return a SDLDirectPixelAccess object. More... | |
virtual void | flushFrameBuffer () |
Copy frame buffer to display buffer. More... | |
virtual void | clearScreen () |
Clear frame buffer (paint it black). More... | |
Public Member Functions inherited from openmsx::OutputSurface | |
OutputSurface (const OutputSurface &)=delete | |
OutputSurface & | operator= (const OutputSurface &)=delete |
virtual | ~OutputSurface ()=default |
int | getLogicalWidth () const |
int | getLogicalHeight () const |
gl::ivec2 | getLogicalSize () const |
gl::ivec2 | getPhysicalSize () const |
gl::ivec2 | getViewOffset () const |
gl::ivec2 | getViewSize () const |
gl::vec2 | getViewScale () const |
bool | isViewScaled () const |
const PixelFormat & | getPixelFormat () const |
uint32_t | mapRGB (gl::vec3 rgb) const |
Returns the pixel value for the given RGB color. More... | |
uint32_t | mapRGB255 (gl::ivec3 rgb) const |
Same as mapRGB, but RGB components are in range [0..255]. More... | |
template<std::unsigned_integral Pixel> | |
Pixel | getKeyColor () const |
Returns the color key for this output surface. More... | |
template<std::unsigned_integral Pixel> | |
Pixel | getKeyColorClash () const |
Returns a color that is visually very close to the key color. More... | |
template<std::unsigned_integral Pixel> | |
Pixel | mapKeyedRGB255 (gl::ivec3 rgb) |
Returns the pixel value for the given RGB color. More... | |
template<std::unsigned_integral Pixel> | |
Pixel | mapKeyedRGB (gl::vec3 rgb) |
Returns the pixel value for the given RGB color. More... | |
virtual void | saveScreenshot (const std::string &filename)=0 |
Save the content of this OutputSurface to a PNG file. More... | |
Public Member Functions inherited from openmsx::VisibleSurface | |
virtual | ~VisibleSurface () |
virtual void | updateWindowTitle ()=0 |
virtual bool | setFullScreen (bool fullscreen)=0 |
virtual void | finish ()=0 |
When a complete frame is finished, call this method. More... | |
virtual std::unique_ptr< Layer > | createSnowLayer ()=0 |
virtual std::unique_ptr< Layer > | createConsoleLayer (Reactor &reactor, CommandConsole &console)=0 |
virtual std::unique_ptr< Layer > | createOSDGUILayer (OSDGUI &gui)=0 |
virtual std::unique_ptr< OutputSurface > | createOffScreenSurface ()=0 |
Create an off-screen OutputSurface which has similar properties as this VisibleSurface. More... | |
CliComm & | getCliComm () const |
Display & | getDisplay () const |
Public Member Functions inherited from openmsx::EventListener | |
EventListener (const EventListener &)=delete | |
EventListener & | operator= (const EventListener &)=delete |
virtual int | signalEvent (const Event &event)=0 |
This method gets called when an event you are subscribed to occurs. More... | |
Static Public Member Functions | |
static void | saveScreenshotGL (const OutputSurface &output, const std::string &filename) |
Additional Inherited Members | |
Protected Member Functions inherited from openmsx::SDLVisibleSurfaceBase | |
void | createSurface (int width, int height, unsigned flags) |
virtual void | fullScreenUpdated (bool fullscreen)=0 |
VisibleSurface (Display &display, RTScheduler &rtScheduler, EventDistributor &eventDistributor, InputEventGenerator &inputEventGenerator, CliComm &cliComm, VideoSystem &videoSystem) | |
Protected Member Functions inherited from openmsx::SDLOutputSurface | |
SDLOutputSurface ()=default | |
void | setSDLPixelFormat (const SDL_PixelFormat &format) |
void | setSDLSurface (SDL_Surface *surface_) |
void | setSDLRenderer (SDL_Renderer *r) |
Protected Member Functions inherited from openmsx::OutputSurface | |
OutputSurface ()=default | |
void | calculateViewPort (gl::ivec2 logSize, gl::ivec2 physSize) |
void | setPixelFormat (const PixelFormat &format) |
void | setOpenGlPixelFormat () |
Protected Member Functions inherited from openmsx::VisibleSurface | |
VisibleSurface (Display &display, RTScheduler &rtScheduler, EventDistributor &eventDistributor, InputEventGenerator &inputEventGenerator, CliComm &cliComm, VideoSystem &videoSystem) | |
Protected Member Functions inherited from openmsx::EventListener | |
EventListener ()=default | |
~EventListener ()=default | |
Protected Attributes inherited from openmsx::SDLVisibleSurfaceBase | |
SDLSubSystemInitializer< SDL_INIT_VIDEO > | videoSubSystem |
SDLWindowPtr | window |
Visible surface for SDL openGL renderers.
Definition at line 10 of file SDLGLVisibleSurface.hh.
openmsx::SDLGLVisibleSurface::SDLGLVisibleSurface | ( | int | width, |
int | height, | ||
Display & | display, | ||
RTScheduler & | rtScheduler, | ||
EventDistributor & | eventDistributor, | ||
InputEventGenerator & | inputEventGenerator, | ||
CliComm & | cliComm, | ||
VideoSystem & | videoSystem | ||
) |
Definition at line 20 of file SDLGLVisibleSurface.cc.
References openmsx::Subject< T >::attach(), gl::context, openmsx::SDLVisibleSurfaceBase::createSurface(), openmsx::VisibleSurface::getDisplay(), openmsx::RenderSettings::getFullScreen(), openmsx::Display::getRenderSettings(), openmsx::RenderSettings::getVSyncSetting(), openmsx::OutputSurface::setOpenGlPixelFormat(), VERSION_STRING, and openmsx::SDLVisibleSurfaceBase::window.
|
override |
Definition at line 112 of file SDLGLVisibleSurface.cc.
References gl::context, openmsx::Subject< T >::detach(), openmsx::VisibleSurface::getDisplay(), openmsx::Display::getRenderSettings(), and openmsx::RenderSettings::getVSyncSetting().
|
overridevirtual |
Implements openmsx::VisibleSurface.
Definition at line 162 of file SDLGLVisibleSurface.cc.
References openmsx::OutputSurface::getLogicalSize().
|
overridevirtual |
Create an off-screen OutputSurface which has similar properties as this VisibleSurface.
E.g. used to re-render the current frame without OSD elements to take a screenshot.
Implements openmsx::VisibleSurface.
Definition at line 176 of file SDLGLVisibleSurface.cc.
|
overridevirtual |
Implements openmsx::VisibleSurface.
Definition at line 171 of file SDLGLVisibleSurface.cc.
|
overridevirtual |
Implements openmsx::VisibleSurface.
Definition at line 157 of file SDLGLVisibleSurface.cc.
References openmsx::VisibleSurface::getDisplay().
|
overridevirtual |
When a complete frame is finished, call this method.
It will 'actually' display it. E.g. when using double buffering it will swap the front and back buffer.
Implements openmsx::VisibleSurface.
Definition at line 152 of file SDLGLVisibleSurface.cc.
References openmsx::SDLVisibleSurfaceBase::window.
|
overridevirtual |
Implements openmsx::SDLVisibleSurfaceBase.
Definition at line 229 of file SDLGLVisibleSurface.cc.
References openmsx::OutputSurface::getLogicalSize().
|
overridevirtual |
Save the content of this OutputSurface to a PNG file.
MSXException | If creating the PNG file fails. |
Implements openmsx::OutputSurface.
Definition at line 120 of file SDLGLVisibleSurface.cc.
References saveScreenshotGL().
|
static |
Definition at line 125 of file SDLGLVisibleSurface.cc.
References openmsx::MemBuffer< T, ALIGNMENT >::data(), openmsx::OutputSurface::getViewOffset(), openmsx::OutputSurface::getViewSize(), VLA, and xrange().
Referenced by saveScreenshot().