Added screen base class
This commit is contained in:
parent
65e5993ee4
commit
bc2876d1b5
19
include/Screen.hpp
Normal file
19
include/Screen.hpp
Normal 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;
|
||||||
|
};
|
|
@ -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
18
src/Screen.cpp
Normal 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);
|
||||||
|
}
|
Loading…
Reference in a new issue