Display class
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -33,23 +33,27 @@ 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;
|
||||
|
||||
SMH_VSYNC_DISPLAY_MODE VSyncMode = VSYNC_DEFAULT;
|
||||
SMH_MXAA_MODE MXAAMode = MXAA_DEFAULT;
|
||||
SMH_MXAA_MODE MXAAMode = MXAA_DEFAULT;
|
||||
|
||||
virtual ~Display();
|
||||
private:
|
||||
Logger& logger;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
24
src/main.cpp
24
src/main.cpp
@@ -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) {
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user