-
Notifications
You must be signed in to change notification settings - Fork 0
/
Display.cpp
57 lines (45 loc) · 1.39 KB
/
Display.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "Display.h"
#include <iostream>
#include <GL/glew.h>
Display::Display( int width, int height, const std::string& title ) {
SDL_Init( SDL_INIT_EVERYTHING );
SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 8 );
SDL_GL_SetAttribute( SDL_GL_BUFFER_SIZE, 32 );
SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 24 );
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
this->window = SDL_CreateWindow( title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL );
this->glContext = SDL_GL_CreateContext( this->window );
GLenum status = glewInit();
if ( status != GLEW_OK ) {
std::cerr << "Glew failed to initialize!" << std::endl;
} else {
std::cerr << "Glew OK" << std::endl;
this->isClosed = false;
}
glEnable( GL_DEPTH_TEST );
glEnable( GL_CULL_FACE );
glCullFace( GL_BACK );
}
Display::~Display() {
SDL_GL_DeleteContext( this->glContext );
SDL_Quit();
}
void Display::Update() {
SDL_GL_SwapWindow( this->window );
SDL_Event e;
while ( SDL_PollEvent( &e ) ) {
if ( e.type == SDL_QUIT ) {
this->isClosed = true;
}
}
}
bool Display::IsClosed() {
return this->isClosed;
}
void Display::Clear( float r, float g, float b, float a ) {
glClearColor( r, g, b, a );
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ;
}