Display class
This commit is contained in:
57
.vscode/settings.json
vendored
Normal file
57
.vscode/settings.json
vendored
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -45,7 +45,7 @@ include_directories(${executable}
|
|||||||
${IncludeDIR}
|
${IncludeDIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB_RECURSE SourceFiles
|
file(GLOB SourceFiles
|
||||||
${SrcDIR}/*
|
${SrcDIR}/*
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -61,13 +61,18 @@ typedef enum {
|
|||||||
} ConsoleColour;
|
} ConsoleColour;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
class Colour {
|
class Colour {
|
||||||
public:
|
public:
|
||||||
static void resetColour();
|
static void resetColour();
|
||||||
|
|
||||||
template<class T>
|
template<typename T>
|
||||||
static void consoleColour(T colour);
|
static void consoleColour(T colour) {
|
||||||
|
#ifdef _WIN32
|
||||||
|
SetConsoleTextAttribute(h, colour);
|
||||||
|
#else
|
||||||
|
std::cout << "\033[" << colour << "m";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@@ -85,7 +90,6 @@ typedef enum {
|
|||||||
|
|
||||||
class Logger {
|
class Logger {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
std::stringstream outStream;
|
std::stringstream outStream;
|
||||||
std::map<LogType, std::string> lookupTable;
|
std::map<LogType, std::string> lookupTable;
|
||||||
Logger();
|
Logger();
|
||||||
@@ -122,7 +126,6 @@ public:
|
|||||||
#ifdef LOGGER_DEFINITION
|
#ifdef LOGGER_DEFINITION
|
||||||
#undef LOGGER_DEFINITION
|
#undef LOGGER_DEFINITION
|
||||||
|
|
||||||
|
|
||||||
void Colour::resetColour() {
|
void Colour::resetColour() {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
SetConsoleTextAttribute(h, CONSOLE_COLOUR_BG_DEFAULT);
|
SetConsoleTextAttribute(h, CONSOLE_COLOUR_BG_DEFAULT);
|
||||||
@@ -134,15 +137,6 @@ void Colour::resetColour() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
void Colour::consoleColour(T colour) {
|
|
||||||
#ifdef _WIN32
|
|
||||||
SetConsoleTextAttribute(h, colour);
|
|
||||||
#else
|
|
||||||
std::cout << "\033[" << colour << "m";
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger::Logger() {
|
Logger::Logger() {
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
#include <glm/gtc/type_ptr.hpp>
|
#include <glm/gtc/type_ptr.hpp>
|
||||||
|
|
||||||
// Custom includes
|
// Custom includes
|
||||||
#define LOGGER_DEFINITION
|
// #define LOGGER_DEFINITION
|
||||||
#include <logger.h>
|
#include <logger.h>
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
#include "object.h"
|
#include "object.h"
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
#include "display.h"
|
#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_VSYNC_DISPLAY_MODE vsyncMode,
|
||||||
SMH_MXAA_MODE mxaaMode) {
|
SMH_MXAA_MODE mxaaMode)
|
||||||
|
: logger(logger) {
|
||||||
|
|
||||||
MXAAMode = mxaaMode;
|
MXAAMode = mxaaMode;
|
||||||
VSyncMode = vsyncMode;
|
VSyncMode = vsyncMode;
|
||||||
|
|
||||||
|
logger << LOGGER_INFO << "Initializing display" << LOGGER_ENDL;
|
||||||
SDL_Init(SDL_INIT_EVERYTHING);
|
SDL_Init(SDL_INIT_EVERYTHING);
|
||||||
|
|
||||||
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
|
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_MULTISAMPLEBUFFERS, 1);
|
||||||
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, mxaaLevel);
|
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, mxaaLevel);
|
||||||
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, smxaaLevel.c_str());
|
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_MAJOR_VERSION, 4);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 5);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 5);
|
||||||
|
|
||||||
// Create GL window
|
// Create GL window
|
||||||
|
logger << LOGGER_INFO << "Creating window" << LOGGER_ENDL;
|
||||||
window = SDL_CreateWindow(name.c_str(),
|
window = SDL_CreateWindow(name.c_str(),
|
||||||
SDL_WINDOWPOS_CENTERED,
|
SDL_WINDOWPOS_CENTERED,
|
||||||
SDL_WINDOWPOS_CENTERED, w, h,
|
SDL_WINDOWPOS_CENTERED, w, h,
|
||||||
SDL_WINDOW_OPENGL);
|
SDL_WINDOW_OPENGL);
|
||||||
// Create GL context
|
// Create GL context
|
||||||
|
logger << LOGGER_INFO << "Creating OpenGL context" << LOGGER_ENDL;
|
||||||
glContext = SDL_GL_CreateContext(window);
|
glContext = SDL_GL_CreateContext(window);
|
||||||
|
|
||||||
// Set VSYNC swap interval
|
// Set VSYNC swap interval
|
||||||
if (vsyncMode == VSYNC_DEFAULT || vsyncMode == VSYNC_ENABLED)
|
if (vsyncMode == VSYNC_DEFAULT || vsyncMode == VSYNC_ENABLED) {
|
||||||
SDL_GL_SetSwapInterval(1);
|
SDL_GL_SetSwapInterval(1);
|
||||||
if (vsyncMode == VSYNC_DISABLED)
|
logger << LOGGER_INFO << "VSync enabled" << LOGGER_ENDL;
|
||||||
|
}
|
||||||
|
if (vsyncMode == VSYNC_DISABLED) {
|
||||||
SDL_GL_SetSwapInterval(0);
|
SDL_GL_SetSwapInterval(0);
|
||||||
|
logger << LOGGER_INFO << "VSync disabled" << LOGGER_ENDL;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger << LOGGER_INFO << "Display set up" << LOGGER_ENDL;
|
||||||
|
|
||||||
// Load OpenGL
|
// Load OpenGL
|
||||||
gladLoadGLLoader(SDL_GL_GetProcAddress);
|
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_MXAA_MODE mxaaMode,
|
||||||
SMH_VSYNC_DISPLAY_MODE vsyncMode) {
|
SMH_VSYNC_DISPLAY_MODE vsyncMode)
|
||||||
|
: logger(logger) {
|
||||||
|
|
||||||
MXAAMode = mxaaMode;
|
MXAAMode = mxaaMode;
|
||||||
VSyncMode = vsyncMode;
|
VSyncMode = vsyncMode;
|
||||||
|
|
||||||
|
logger << LOGGER_INFO << "Initializing display" << LOGGER_ENDL;
|
||||||
SDL_Init(SDL_INIT_EVERYTHING);
|
SDL_Init(SDL_INIT_EVERYTHING);
|
||||||
|
|
||||||
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
|
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_MULTISAMPLEBUFFERS, 1);
|
||||||
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, mxaaLevel);
|
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, mxaaLevel);
|
||||||
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, smxaaLevel.c_str());
|
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_MAJOR_VERSION, 4);
|
||||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 5);
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 5);
|
||||||
|
|
||||||
// Create GL window
|
// Create GL window
|
||||||
|
logger << LOGGER_INFO << "Creating window" << LOGGER_ENDL;
|
||||||
window = SDL_CreateWindow(name.c_str(),
|
window = SDL_CreateWindow(name.c_str(),
|
||||||
SDL_WINDOWPOS_CENTERED,
|
SDL_WINDOWPOS_CENTERED,
|
||||||
SDL_WINDOWPOS_CENTERED, w, h,
|
SDL_WINDOWPOS_CENTERED, w, h,
|
||||||
SDL_WINDOW_OPENGL);
|
SDL_WINDOW_OPENGL);
|
||||||
// Create GL context
|
// Create GL context
|
||||||
|
logger << LOGGER_INFO << "Creating OpenGL context" << LOGGER_ENDL;
|
||||||
glContext = SDL_GL_CreateContext(window);
|
glContext = SDL_GL_CreateContext(window);
|
||||||
|
|
||||||
// Set VSYNC swap interval
|
// Set VSYNC swap interval
|
||||||
if (vsyncMode == VSYNC_DEFAULT || vsyncMode == VSYNC_ENABLED)
|
if (vsyncMode == VSYNC_DEFAULT || vsyncMode == VSYNC_ENABLED) {
|
||||||
SDL_GL_SetSwapInterval(1);
|
SDL_GL_SetSwapInterval(1);
|
||||||
if (vsyncMode == VSYNC_DISABLED)
|
logger << LOGGER_INFO << "VSync enabled" << LOGGER_ENDL;
|
||||||
|
}
|
||||||
|
if (vsyncMode == VSYNC_DISABLED) {
|
||||||
SDL_GL_SetSwapInterval(0);
|
SDL_GL_SetSwapInterval(0);
|
||||||
|
logger << LOGGER_INFO << "VSync disabled" << LOGGER_ENDL;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger << LOGGER_INFO << "Display set up" << LOGGER_ENDL;
|
||||||
|
|
||||||
// Load OpenGL
|
// Load OpenGL
|
||||||
gladLoadGLLoader(SDL_GL_GetProcAddress);
|
gladLoadGLLoader(SDL_GL_GetProcAddress);
|
||||||
|
logger << LOGGER_INFO << "Loaded OpenGL" << LOGGER_ENDL;
|
||||||
|
logger << LOGGER_ENDL;
|
||||||
|
isClosed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Display::setName(std::string name) {
|
void Display::setName(std::string name) {
|
||||||
|
|||||||
@@ -33,23 +33,27 @@ typedef enum {
|
|||||||
|
|
||||||
class Display {
|
class Display {
|
||||||
public:
|
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_VSYNC_DISPLAY_MODE vsyncMode = VSYNC_DEFAULT,
|
||||||
SMH_MXAA_MODE mxaaMode = MXAA_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_MXAA_MODE mxaaMode = MXAA_DEFAULT,
|
||||||
SMH_VSYNC_DISPLAY_MODE vsyncMode = VSYNC_DEFAULT);
|
SMH_VSYNC_DISPLAY_MODE vsyncMode = VSYNC_DEFAULT);
|
||||||
|
|
||||||
void setName(std::string name);
|
void setName(std::string name);
|
||||||
|
|
||||||
|
bool isClosed = true;
|
||||||
|
|
||||||
SDL_Window* window;
|
SDL_Window* window;
|
||||||
SDL_GLContext glContext;
|
SDL_GLContext glContext;
|
||||||
|
|
||||||
SMH_VSYNC_DISPLAY_MODE VSyncMode = VSYNC_DEFAULT;
|
SMH_VSYNC_DISPLAY_MODE VSyncMode = VSYNC_DEFAULT;
|
||||||
SMH_MXAA_MODE MXAAMode = MXAA_DEFAULT;
|
SMH_MXAA_MODE MXAAMode = MXAA_DEFAULT;
|
||||||
|
|
||||||
virtual ~Display();
|
virtual ~Display();
|
||||||
|
private:
|
||||||
|
Logger& logger;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
24
src/main.cpp
24
src/main.cpp
@@ -2,9 +2,9 @@
|
|||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include <glm/glm.hpp>
|
// #include <glm/glm.hpp>
|
||||||
#include <glm/gtc/matrix_transform.hpp>
|
// #include <glm/gtc/matrix_transform.hpp>
|
||||||
#include <glm/gtc/type_ptr.hpp>
|
// #include <glm/gtc/type_ptr.hpp>
|
||||||
|
|
||||||
// Custom includes
|
// Custom includes
|
||||||
#define LOGGER_DEFINITION
|
#define LOGGER_DEFINITION
|
||||||
@@ -13,10 +13,22 @@
|
|||||||
#include "display.h"
|
#include "display.h"
|
||||||
|
|
||||||
int main (int argc, char** argv) {
|
int main (int argc, char** argv) {
|
||||||
Logger logger;
|
|
||||||
Display display {"SMH Engine", 1280, 720, logger, MXAA_8X, VSYNC_ENABLED};
|
|
||||||
|
|
||||||
|
std::cout << "-----------------------------\n"
|
||||||
|
<< "----- SMH Render Engine -----\n"
|
||||||
|
<< "-------- Version 0.0 --------\n"
|
||||||
|
<< "----- ©Benjamin Kyd 2019 ----\n"
|
||||||
|
<< "-----------------------------\n\n";
|
||||||
|
|
||||||
|
Logger logger;
|
||||||
|
|
||||||
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user