mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
50 lines
No EOL
1,000 B
C++
50 lines
No EOL
1,000 B
C++
#pragma once
|
|
|
|
#include "pch.h"
|
|
#include "Shared/SettingTypes.h"
|
|
|
|
struct RenderedFrame;
|
|
|
|
struct RenderSurfaceInfo
|
|
{
|
|
uint32_t* Buffer = nullptr;
|
|
uint32_t Width = 0;
|
|
uint32_t Height = 0;
|
|
bool IsDirty = true;
|
|
|
|
bool UpdateSize(uint32_t width, uint32_t height)
|
|
{
|
|
if(Width != width || Height != height) {
|
|
delete[] Buffer;
|
|
Buffer = new uint32_t[height * width];
|
|
Width = width;
|
|
Height = height;
|
|
Clear();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void Clear()
|
|
{
|
|
memset(Buffer, 0, Width * Height * sizeof(uint32_t));
|
|
IsDirty = true;
|
|
}
|
|
|
|
~RenderSurfaceInfo()
|
|
{
|
|
delete[] Buffer;
|
|
}
|
|
};
|
|
|
|
class IRenderingDevice
|
|
{
|
|
public:
|
|
virtual ~IRenderingDevice() {}
|
|
virtual void UpdateFrame(RenderedFrame& frame) = 0;
|
|
virtual void ClearFrame() = 0;
|
|
virtual void Render(RenderSurfaceInfo& emuHud, RenderSurfaceInfo& scriptHud) = 0;
|
|
virtual void Reset() = 0;
|
|
virtual void OnRendererThreadStarted() {}
|
|
virtual void SetExclusiveFullscreenMode(bool fullscreen, void* windowHandle) = 0;
|
|
}; |