Files
choco-chip8/DisplaySDL.hpp

27 lines
718 B
C++

#pragma once
#include "Peripherals.hpp"
#include <array>
#include <cstdint>
#include <memory>
#include <SDL2/SDL_video.h>
class DisplaySDL : public chocochip8::Display {
public:
DisplaySDL(int w, int h, uint32_t fgCol = 0xffffff, uint32_t bgCol = 0x000000);
~DisplaySDL() override;
void clear() override;
int blit(const chocochip8::Scanline &scanline, int y) override;
void updateWindow(bool forceWindowUpdate = false) const;
private:
using Framebuffer = std::array<chocochip8::Scanline, chocochip8::gcHeight>;
std::unique_ptr<Framebuffer> mpFramebuffer;
mutable std::unique_ptr<Framebuffer> mpDisplayState;
SDL_Window *mpWindow;
Uint32 mFgColor;
Uint32 mBgColor;
mutable bool mDoClear;
};