Display class

This commit is contained in:
Ben
2019-02-21 17:40:45 +00:00
parent 77426b504c
commit 684c14eda0
7 changed files with 136 additions and 33 deletions

57
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,57 @@
{
"files.associations": {
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"csignal": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"array": "cpp",
"atomic": "cpp",
"strstream": "cpp",
"*.tcc": "cpp",
"bitset": "cpp",
"chrono": "cpp",
"complex": "cpp",
"condition_variable": "cpp",
"cstdint": "cpp",
"deque": "cpp",
"list": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"exception": "cpp",
"fstream": "cpp",
"functional": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"memory": "cpp",
"mutex": "cpp",
"new": "cpp",
"optional": "cpp",
"ostream": "cpp",
"ratio": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"thread": "cpp",
"cinttypes": "cpp",
"type_traits": "cpp",
"tuple": "cpp",
"typeindex": "cpp",
"typeinfo": "cpp",
"utility": "cpp",
"variant": "cpp"
}
}

View File

@@ -45,7 +45,7 @@ include_directories(${executable}
${IncludeDIR}
)
file(GLOB_RECURSE SourceFiles
file(GLOB SourceFiles
${SrcDIR}/*
)

View File

@@ -61,13 +61,18 @@ typedef enum {
} ConsoleColour;
#endif
class Colour {
public:
static void resetColour();
template<class T>
static void consoleColour(T colour);
template<typename T>
static void consoleColour(T colour) {
#ifdef _WIN32
SetConsoleTextAttribute(h, colour);
#else
std::cout << "\033[" << colour << "m";
#endif
}
};
typedef enum {
@@ -85,7 +90,6 @@ typedef enum {
class Logger {
public:
std::stringstream outStream;
std::map<LogType, std::string> lookupTable;
Logger();
@@ -122,7 +126,6 @@ public:
#ifdef LOGGER_DEFINITION
#undef LOGGER_DEFINITION
void Colour::resetColour() {
#ifdef _WIN32
SetConsoleTextAttribute(h, CONSOLE_COLOUR_BG_DEFAULT);
@@ -134,15 +137,6 @@ void Colour::resetColour() {
#endif
}
template<typename T>
void Colour::consoleColour(T colour) {
#ifdef _WIN32
SetConsoleTextAttribute(h, colour);
#else
std::cout << "\033[" << colour << "m";
#endif
}
Logger::Logger() {
#ifdef _WIN32

View File

@@ -19,7 +19,7 @@
#include <glm/gtc/type_ptr.hpp>
// Custom includes
#define LOGGER_DEFINITION
// #define LOGGER_DEFINITION
#include <logger.h>
#include "timers.h"
#include "object.h"

View File

@@ -1,12 +1,14 @@
#include "display.h"
Display::Display(std::string name, int w, int h, Logger& logger,
Display::Display(std::string name, Logger& logger, int w, int h,
SMH_VSYNC_DISPLAY_MODE vsyncMode,
SMH_MXAA_MODE mxaaMode) {
SMH_MXAA_MODE mxaaMode)
: logger(logger) {
MXAAMode = mxaaMode;
VSyncMode = vsyncMode;
logger << LOGGER_INFO << "Initializing display" << LOGGER_ENDL;
SDL_Init(SDL_INIT_EVERYTHING);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
@@ -44,36 +46,56 @@ Display::Display(std::string name, int w, int h, Logger& logger,
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, mxaaLevel);
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, smxaaLevel.c_str());
logger << LOGGER_INFO << "MXAA set to " << mxaaLevel << "xMSAA" << LOGGER_ENDL;
} else {
logger << LOGGER_INFO << "MXAA disabled" << LOGGER_ENDL;
}
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 5);
// Create GL window
logger << LOGGER_INFO << "Creating window" << LOGGER_ENDL;
window = SDL_CreateWindow(name.c_str(),
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, w, h,
SDL_WINDOW_OPENGL);
// Create GL context
logger << LOGGER_INFO << "Creating OpenGL context" << LOGGER_ENDL;
glContext = SDL_GL_CreateContext(window);
// Set VSYNC swap interval
if (vsyncMode == VSYNC_DEFAULT || vsyncMode == VSYNC_ENABLED)
if (vsyncMode == VSYNC_DEFAULT || vsyncMode == VSYNC_ENABLED) {
SDL_GL_SetSwapInterval(1);
if (vsyncMode == VSYNC_DISABLED)
logger << LOGGER_INFO << "VSync enabled" << LOGGER_ENDL;
}
if (vsyncMode == VSYNC_DISABLED) {
SDL_GL_SetSwapInterval(0);
logger << LOGGER_INFO << "VSync disabled" << LOGGER_ENDL;
}
logger << LOGGER_INFO << "Display set up" << LOGGER_ENDL;
// Load OpenGL
gladLoadGLLoader(SDL_GL_GetProcAddress);
logger << LOGGER_INFO << "Loaded OpenGL" << LOGGER_ENDL;
logger << LOGGER_ENDL;
isClosed = false;
}
Display::Display(std::string name, int w, int h, Logger& logger,
Display::Display(std::string name, Logger& logger, int w, int h,
SMH_MXAA_MODE mxaaMode,
SMH_VSYNC_DISPLAY_MODE vsyncMode) {
SMH_VSYNC_DISPLAY_MODE vsyncMode)
: logger(logger) {
MXAAMode = mxaaMode;
VSyncMode = vsyncMode;
logger << LOGGER_INFO << "Initializing display" << LOGGER_ENDL;
SDL_Init(SDL_INIT_EVERYTHING);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
@@ -111,27 +133,41 @@ Display::Display(std::string name, int w, int h, Logger& logger,
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, mxaaLevel);
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, smxaaLevel.c_str());
logger << LOGGER_INFO << "MXAA set to " << mxaaLevel << "xMSAA" << LOGGER_ENDL;
} else {
logger << LOGGER_INFO << "MXAA disabled" << LOGGER_ENDL;
}
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 5);
// Create GL window
logger << LOGGER_INFO << "Creating window" << LOGGER_ENDL;
window = SDL_CreateWindow(name.c_str(),
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, w, h,
SDL_WINDOW_OPENGL);
// Create GL context
logger << LOGGER_INFO << "Creating OpenGL context" << LOGGER_ENDL;
glContext = SDL_GL_CreateContext(window);
// Set VSYNC swap interval
if (vsyncMode == VSYNC_DEFAULT || vsyncMode == VSYNC_ENABLED)
if (vsyncMode == VSYNC_DEFAULT || vsyncMode == VSYNC_ENABLED) {
SDL_GL_SetSwapInterval(1);
if (vsyncMode == VSYNC_DISABLED)
logger << LOGGER_INFO << "VSync enabled" << LOGGER_ENDL;
}
if (vsyncMode == VSYNC_DISABLED) {
SDL_GL_SetSwapInterval(0);
logger << LOGGER_INFO << "VSync disabled" << LOGGER_ENDL;
}
logger << LOGGER_INFO << "Display set up" << LOGGER_ENDL;
// Load OpenGL
gladLoadGLLoader(SDL_GL_GetProcAddress);
logger << LOGGER_INFO << "Loaded OpenGL" << LOGGER_ENDL;
logger << LOGGER_ENDL;
isClosed = false;
}
void Display::setName(std::string name) {

View File

@@ -33,16 +33,18 @@ typedef enum {
class Display {
public:
Display(std::string name, int w, int h, Logger& logger,
Display(std::string name, Logger& logger, int w, int h,
SMH_VSYNC_DISPLAY_MODE vsyncMode = VSYNC_DEFAULT,
SMH_MXAA_MODE mxaaMode = MXAA_DEFAULT);
Display(std::string name, int w, int h, Logger& logger,
Display(std::string name, Logger& logger, int w, int h,
SMH_MXAA_MODE mxaaMode = MXAA_DEFAULT,
SMH_VSYNC_DISPLAY_MODE vsyncMode = VSYNC_DEFAULT);
void setName(std::string name);
bool isClosed = true;
SDL_Window* window;
SDL_GLContext glContext;
@@ -50,6 +52,8 @@ public:
SMH_MXAA_MODE MXAAMode = MXAA_DEFAULT;
virtual ~Display();
private:
Logger& logger;
};
#endif

View File

@@ -2,9 +2,9 @@
#include <chrono>
#include <vector>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
// #include <glm/glm.hpp>
// #include <glm/gtc/matrix_transform.hpp>
// #include <glm/gtc/type_ptr.hpp>
// Custom includes
#define LOGGER_DEFINITION
@@ -13,10 +13,22 @@
#include "display.h"
int main (int argc, char** argv) {
std::cout << "-----------------------------\n"
<< "----- SMH Render Engine -----\n"
<< "-------- Version 0.0 --------\n"
<< "----- ©Benjamin Kyd 2019 ----\n"
<< "-----------------------------\n\n";
Logger logger;
Display display {"SMH Engine", 1280, 720, logger, MXAA_8X, VSYNC_ENABLED};
Display display {"SMH Engine", logger, 1280, 720, MXAA_4X, VSYNC_ENABLED};
SDL_Event e;
while (!display.isClosed)
while (SDL_PollEvent(&e))
if (e.type == SDL_QUIT || e.key.keysym.sym == SDLK_ESCAPE)
display.isClosed = true;
return 0;
}