mirror of
https://github.com/libretro/Play-.git
synced 2025-03-04 09:17:50 +00:00
Add screencapture method for OpenGL
This commit is contained in:
parent
6d4a78b3da
commit
cee812eb02
@ -2135,6 +2135,15 @@ void CGSH_OpenGL::ReadFramebuffer(uint32 width, uint32 height, void* buffer)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Framework::CBitmap CGSH_OpenGL::GetScreenshot()
|
||||||
|
{
|
||||||
|
GLint viewport[4];
|
||||||
|
glGetIntegerv(GL_VIEWPORT, viewport);
|
||||||
|
auto imgbuffer = Framework::CBitmap(viewport[2], viewport[3], 32);
|
||||||
|
glReadPixels(viewport[0], viewport[1], viewport[2], viewport[3], GL_RGBA, GL_UNSIGNED_BYTE, imgbuffer.GetPixels());
|
||||||
|
return imgbuffer.FlipVertical();
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
// Framebuffer
|
// Framebuffer
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
|
@ -29,6 +29,8 @@ public:
|
|||||||
void ProcessClutTransfer(uint32, uint32) override;
|
void ProcessClutTransfer(uint32, uint32) override;
|
||||||
void ReadFramebuffer(uint32, uint32, void*) override;
|
void ReadFramebuffer(uint32, uint32, void*) override;
|
||||||
|
|
||||||
|
Framework::CBitmap GetScreenshot() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void PalCache_Flush();
|
void PalCache_Flush();
|
||||||
void LoadPreferences();
|
void LoadPreferences();
|
||||||
|
@ -375,7 +375,7 @@ void CGSHandler::Flip(bool showOnly)
|
|||||||
|
|
||||||
void CGSHandler::FlipImpl()
|
void CGSHandler::FlipImpl()
|
||||||
{
|
{
|
||||||
|
OnFlipComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGSHandler::MarkNewFrame()
|
void CGSHandler::MarkNewFrame()
|
||||||
@ -1660,3 +1660,8 @@ void CGSHandler::ThreadProc()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Framework::CBitmap CGSHandler::GetScreenshot()
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Screenshot feature is not implemented in current backend.");
|
||||||
|
}
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include <array>
|
#include <array>
|
||||||
#include <boost/signals2.hpp>
|
#include <boost/signals2.hpp>
|
||||||
|
|
||||||
|
#include "bitmap/Bitmap.h"
|
||||||
#include "Types.h"
|
#include "Types.h"
|
||||||
#include "Convertible.h"
|
#include "Convertible.h"
|
||||||
#include "../MailBox.h"
|
#include "../MailBox.h"
|
||||||
@ -629,6 +630,10 @@ public:
|
|||||||
bool GetCrtIsInterlaced() const;
|
bool GetCrtIsInterlaced() const;
|
||||||
bool GetCrtIsFrameMode() const;
|
bool GetCrtIsFrameMode() const;
|
||||||
|
|
||||||
|
virtual Framework::CBitmap GetScreenshot();
|
||||||
|
|
||||||
|
boost::signals2::signal<void()> OnFlipComplete;
|
||||||
|
|
||||||
boost::signals2::signal<void (uint32)> OnNewFrame;
|
boost::signals2::signal<void (uint32)> OnNewFrame;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user