13 InitAlut::InitAlut() {
14 if (!alutInit(nullptr, nullptr)) {
15 throw AlutError("alutInit(nullptr, nullptr)");
19 InitAlut::~InitAlut() {
21 throw AlutError("alutExit()");
26 InitGL::InitGL(bool double_buffer, int multi_sample) {
27 if (SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3) != 0) {
28 throw SDLError("SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3)");
30 if (SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3) != 0) {
31 throw SDLError("SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3)");
33 if (SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE) != 0) {
34 throw SDLError("SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE)");
38 if (SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0) != 0) {
39 throw SDLError("SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0)");
43 if (multi_sample > 1) {
44 if (SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1) != 0) {
45 throw SDLError("SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1)");
47 if (SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, multi_sample) != 0) {
48 throw SDLError("SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, x)");
55 if (IMG_Init(IMG_INIT_PNG) == 0) {
56 throw SDLError("IMG_Init(IMG_INIT_PNG)");
60 InitIMG::~InitIMG() noexcept {
66 if (SDL_Init(SDL_INIT_VIDEO) != 0) {
67 throw SDLError("SDL_Init(SDL_INIT_VIDEO)");
69 // SDL seems to start out in text input state
73 InitSDL::~InitSDL() noexcept {
79 if (TTF_Init() != 0) {
80 throw SDLError("TTF_Init()");
84 InitTTF::~InitTTF() noexcept {