sgltk 0.6
Simple OpenGL Tool Kit
Loading...
Searching...
No Matches
core.cpp
1#include "core.h"
2
3bool sgltk::initialized = false;
4
5std::string sgltk::error_string = "";
6
7bool sgltk::init_glew() {
8 glewExperimental=GL_TRUE;
9 if(glewInit()) {
10 sgltk::error_string = std::string("glewInit failed");
11 return false;
12 }
13 return true;
14}
15
16bool sgltk::init_img() {
17 unsigned int flags = IMG_INIT_JPG | IMG_INIT_PNG | IMG_INIT_TIF;
18 if((IMG_Init(flags) & flags) != flags) {
19 sgltk::error_string = std::string("IMG_Init Error: ") +
20 SDL_GetError();
21 return false;
22 }
23 return true;
24}
25
26void sgltk::quit_img() {
27 IMG_Quit();
28}
29
30bool sgltk::init_sdl() {
31 if(SDL_Init(SDL_INIT_EVERYTHING)) {
32 sgltk::error_string = std::string("SDL_Init Error: ") +
33 SDL_GetError();
34 return false;
35 }
36 return true;
37}
38
39void sgltk::quit_sdl() {
40 SDL_Quit();
41}
42
43#ifdef HAVE_SDL_TTF_H
44bool sgltk::init_ttf() {
45 if(TTF_Init()) {
46 sgltk::error_string = std::string("SDL_Init Error: ") +
47 SDL_GetError();
48 return false;
49 }
50 return true;
51}
52
53void sgltk::quit_ttf() {
54 TTF_Quit();
55}
56#endif //HAVE_SDL_TTF_H
57
58bool sgltk::init_lib() {
59 if(sgltk::initialized)
60 return true;
61
62 if(sgltk::init_sdl())
63 if(sgltk::init_img())
64#ifdef HAVE_SDL_TTF_H
65 if(sgltk::init_ttf()) {
66#endif //HAVE_SDL_TTF_H
67 sgltk::initialized = true;
68 return true;
69#ifdef HAVE_SDL_MIXER_H
70 }
71#endif //HAVE_SDL_MIXER_H
72
73 sgltk::quit_lib();
74 return false;
75}
76
77void sgltk::quit_lib() {
78 sgltk::initialized = false;
79 quit_img();
80#ifdef HAVE_SDL_TTF_H
81 quit_ttf();
82#endif //HAVE_SDL_TTF_H
83 quit_sdl();
84}
85
86void sgltk::_check_error(std::string message, std::string file, unsigned int line) {
87 std::string err_string;
88 GLenum err = glGetError();
89
90 switch(err) {
91 case GL_INVALID_ENUM:
92 err_string = "INVALID_ENUM";
93 break;
94 case GL_INVALID_VALUE:
95 err_string = "INVALID_VALUE";
96 break;
97 case GL_INVALID_OPERATION:
98 err_string = "INVALID_OPERATION";
99 break;
100 case GL_INVALID_FRAMEBUFFER_OPERATION:
101 err_string = "INVALID_FRAMEBUFFER_OPERATION";
102 break;
103 case GL_OUT_OF_MEMORY:
104 err_string = "OUT_OF_MEMORY";
105 break;
106 case GL_STACK_OVERFLOW:
107 err_string = "STACK_OVERFLOW";
108 break;
109 case GL_STACK_UNDERFLOW:
110 err_string = "STACK_UNDERFLOW";
111 break;
112 }
113 while(err != GL_NO_ERROR) {
114 std::cout << file << " - " << line << ": " << err_string;
115 if(message.length() > 0)
116 std::cout << " - " << message;
117 std::cout << std::endl;
118 err = glGetError();
119 }
120}
121