Added screen base class

This commit is contained in:
Robert 2020-11-05 15:08:34 +01:00
parent 65e5993ee4
commit bc2876d1b5
3 changed files with 38 additions and 1 deletions

19
include/Screen.hpp Normal file
View file

@ -0,0 +1,19 @@
#pragma once
struct SDL_Renderer;
struct SDL_Texture;
struct SDL_Rect { int x, y, w, h };
class Screen
{
public:
Screen(SDL_Renderer* renderer, int x, int y, int w, int h);
~Screen();
virtual void Update() = 0;
virtual void Render(SDL_Renderer* renderer) = 0;
protected:
SDL_Rect screenSpace;
SDL_Texture* texture;
};

View file

@ -1,7 +1,7 @@
add_executable(fourier add_executable(fourier
"main.cpp" "main.cpp"
"RenderWindow.cpp" "RenderWindow.cpp"
) "Screen.cpp")
target_include_directories(fourier PRIVATE target_include_directories(fourier PRIVATE
${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include

18
src/Screen.cpp Normal file
View file

@ -0,0 +1,18 @@
#include "Screen.hpp"
#include <stdexcept>
#include <SDL.h>
Screen::Screen(SDL_Renderer* renderer, int x, int y, int w, int h) :
screenSpace{ x, y, w, h }
{
texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA32, SDL_TEXTUREACCESS_TARGET, w, h);
if (texture == nullptr)
{
throw std::runtime_error(SDL_GetErrorMsg((char*)malloc(512), 511));
}
}
Screen::~Screen()
{
SDL_DestroyTexture(texture);
}