49 lines
No EOL
996 B
C++
49 lines
No EOL
996 B
C++
#pragma once
|
|
#include "stdafx.h"
|
|
#include "../Core/IRenderingDevice.h"
|
|
#include "../Core/VideoRenderer.h"
|
|
#include "libretro.h"
|
|
|
|
class LibretroRenderer : public IRenderingDevice
|
|
{
|
|
private:
|
|
retro_video_refresh_t _sendFrame = nullptr;
|
|
bool _skipMode = false;
|
|
|
|
public:
|
|
LibretroRenderer(retro_video_refresh_t sendFrame)
|
|
{
|
|
_sendFrame = sendFrame;
|
|
VideoRenderer::GetInstance()->RegisterRenderingDevice(this);
|
|
}
|
|
|
|
~LibretroRenderer()
|
|
{
|
|
VideoRenderer::GetInstance()->UnregisterRenderingDevice(this);
|
|
}
|
|
|
|
// Inherited via IRenderingDevice
|
|
virtual void UpdateFrame(void *frameBuffer, uint32_t width, uint32_t height) override
|
|
{
|
|
if(!_skipMode) {
|
|
_sendFrame(frameBuffer, width, height, sizeof(uint32_t) * width);
|
|
}
|
|
}
|
|
|
|
void SetSkipMode(bool skip)
|
|
{
|
|
_skipMode = skip;
|
|
}
|
|
|
|
virtual void Render() override
|
|
{
|
|
}
|
|
|
|
virtual void Reset() override
|
|
{
|
|
}
|
|
|
|
virtual void SetFullscreenMode(bool fullscreen, void *windowHandle, uint32_t monitorWidth, uint32_t monitorHeight) override
|
|
{
|
|
}
|
|
}; |