diff options
Diffstat (limited to 'src/libjin/Graphics/je_window.cpp')
-rw-r--r-- | src/libjin/Graphics/je_window.cpp | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/src/libjin/Graphics/je_window.cpp b/src/libjin/Graphics/je_window.cpp deleted file mode 100644 index c14d290..0000000 --- a/src/libjin/Graphics/je_window.cpp +++ /dev/null @@ -1,130 +0,0 @@ -#include "../core/je_configuration.h" -#if defined(jin_graphics) - -#include <iostream> - -#include "../common/je_exception.h" -#include "../utils/je_utils.h" -#include "../audio/sdl/je_sdl_audio.h" -#include "../utils/je_log.h" - -#include "shaders/je_shader.h" -#include "je_window.h" -#include "je_gl.h" -#include "je_canvas.h" - -using namespace JinEngine::Graphics::Shaders; - -namespace JinEngine -{ - namespace Graphics - { - - bool Window::initSystem(const SettingBase* s) - { - jin_log_info("Initialize window system."); - - if (SDL_Init(SDL_INIT_VIDEO) < 0) - return false; - - const Setting* setting = (Setting*)s; - mSize.w = setting->width; - mSize.h = setting->height; - mFps = setting->fps; - bool vsync = setting->vsync; - const char* title = setting->title; - const char* icon = setting->icon; - - if (mWnd) - { - SDL_DestroyWindow(mWnd); - SDL_FlushEvent(SDL_WINDOWEVENT); - } - - SDL_GLContext ctx = NULL; - - if (ctx) - { - SDL_GL_DeleteContext(ctx); - } - - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); - 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_STENCIL_SIZE, 8); - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - - int wx = SDL_WINDOWPOS_UNDEFINED, - wy = SDL_WINDOWPOS_UNDEFINED; - - int flag = SDL_WINDOW_HIDDEN | SDL_WINDOW_OPENGL; - if (setting->fullscreen) flag |= SDL_WINDOW_FULLSCREEN; - if (setting->resizable) flag |= SDL_WINDOW_RESIZABLE; - - mWnd = SDL_CreateWindow(title, wx, wy, mSize.w, mSize.h, flag); - if (mWnd == NULL) - return false; - - // Set window icon - try - { - Bitmap* bitmap = Bitmap::createBitmap(icon); - SDL_Surface *surface; - Color* pixels = const_cast<Color*>(bitmap->getPixels()); - uint w = bitmap->getWidth(), h = bitmap->getHeight(); - surface = SDL_CreateRGBSurfaceFrom( - pixels, w, h, 32, w * 4, Color::RMASK, Color::GMASK, Color::BMASK, Color::AMASK); - SDL_SetWindowIcon(mWnd, surface); - SDL_FreeSurface(surface); - } catch (...) {} - - ctx = SDL_GL_CreateContext(mWnd); - if (ctx == NULL) - return false; - SDL_GL_SetSwapInterval(vsync ? 1 : 0); - SDL_GL_MakeCurrent(mWnd, ctx); - // Default configuration - gl.setClearColor(0, 0, 0, 0xff); - glClear(GL_COLOR_BUFFER_BIT); - gl.pushColor(0xff, 0xff, 0xff, 0xff); - gl.enable(GL_BLEND); - gl.enable(GL_TEXTURE_2D); - gl.setBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - // Bind to default canvas - Canvas::unbind(); - Shader::unuse(); - // Avoid white blinnk. - swapBuffers(); - - return true; - } - - void Window::quitSystem() - { - jin_log_info("Quit window system."); - // disable opengl - gl.disable(GL_BLEND); - gl.disable(GL_TEXTURE_2D); - // close window - SDL_DestroyWindow(mWnd); - SDL_Quit(); - } - - void Window::swapBuffers() - { - if (mWnd) - SDL_GL_SwapWindow(mWnd); - } - - void Window::setTitle(const char* title) - { - SDL_SetWindowTitle(mWnd, title); - }; - - } // namespace Graphics -} // namespace JinEngine - -#endif // defined(jin_graphics)
\ No newline at end of file |