void init(init_desc* desc_ptr) { std::string t; #ifdef OX_DEBUG t += "OX_DEBUG "; #endif #ifdef NDEBUG t += "NDEBUG "; #endif #ifdef _DEBUG t += "_DEBUG "; #endif #ifdef DEBUG t += "DEBUG "; #endif log::messageln("build settings %s", t.c_str()); init0(); log::messageln("initialize oxygine"); if (desc_ptr) desc = *desc_ptr; #ifdef __S3E__ log::messageln("S3E build"); if (!IwGLInit()) { s3eDebugErrorShow(S3E_MESSAGE_CONTINUE, "IwGLInit failed"); return; } //init_ext(); int width = IwGLGetInt(IW_GL_WIDTH); int height = IwGLGetInt(IW_GL_HEIGHT); log::messageln("Screen BPP : %d", s3eSurfaceGetInt(S3E_SURFACE_PIXEL_TYPE) & S3E_SURFACE_PIXEL_SIZE_MASK); log::messageln("Screen Size : %dx%d", width, height); log::messageln("Vendor : %s", (const char*)glGetString(GL_VENDOR)); log::messageln("Renderer : %s", (const char*)glGetString(GL_RENDERER)); const char* version = (const char*)glGetString(GL_VERSION); log::messageln("Version : %s", version); s3ePointerUpdate(); if (s3ePointerGetInt(S3E_POINTER_MULTI_TOUCH_AVAILABLE)) { s3ePointerRegister(S3E_POINTER_TOUCH_EVENT, &pointerTouchEvent, 0); s3ePointerRegister(S3E_POINTER_TOUCH_MOTION_EVENT, &pointerTouchMotionEvent, 0); } else { s3ePointerRegister(S3E_POINTER_BUTTON_EVENT, &pointerEvent, 0); s3ePointerRegister(S3E_POINTER_MOTION_EVENT, &pointerMotionEvent, 0); } s3eDeviceRegister(S3E_DEVICE_UNPAUSE, applicationUnPause, 0); s3eDeviceRegister(S3E_DEVICE_PAUSE, applicationPause, 0); #elif OXYGINE_SDL log::messageln("SDL build"); SDL_SetHint(SDL_HINT_VIDEO_ALLOW_SCREENSAVER, "1"); SDL_Init(SDL_INIT_VIDEO); if (desc.mode24bpp) { SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); } else { SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); } SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); //SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0); //SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); if (desc.force_gles) { SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); SDL_GL_SetAttribute(SDL_GL_CONTEXT_EGL, 1); } SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1); int flags = SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN; #if TARGET_OS_IPHONE flags |= SDL_WINDOW_BORDERLESS; flags |= SDL_WINDOW_ALLOW_HIGHDPI; flags |= SDL_WINDOW_FULLSCREEN; #endif //SDL_DisplayMode mode; //SDL_GetCurrentDisplayMode(0, &mode); //log::messageln("display mode: %d %d", mode.w, mode.h); if (desc.w == -1 && desc.h == -1) { desc.w = 960; desc.h = 640; } if (desc.fullscreen) flags |= SDL_WINDOW_FULLSCREEN; { Event ev(EVENT_PRECREATEWINDOW); _dispatcher->dispatchEvent(&ev); } log::messageln("creating window %d %d", desc.w, desc.h); _window = SDL_CreateWindow(desc.title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, desc.w, desc.h, flags); if (!_window) { log::error("can't create window: %s", SDL_GetError()); return; } _context = SDL_GL_CreateContext(_window); if (!_context) { log::error("can't create gl context: %s", SDL_GetError()); return; } SDL_GL_SetSwapInterval(desc.vsync ? 1 : 0); #ifdef EMSCRIPTEN SDL_SetEventFilter(SDL_eventsHandler, 0); int v = EM_ASM_INT( { var p = navigator.platform; if (p == 'iPad' || p == 'iPhone' || p == 'iPod') return 1; return 0; }, 0);
void init(init_desc* desc_ptr) { Input::instance.__removeFromDebugList(); log::messageln("initialize oxygine"); if (desc_ptr) desc = *desc_ptr; #ifdef __S3E__ log::messageln("S3E build"); if (!IwGLInit()) { s3eDebugErrorShow(S3E_MESSAGE_CONTINUE, "IwGLInit failed"); return; } //init_ext(); int width = IwGLGetInt(IW_GL_WIDTH); int height = IwGLGetInt(IW_GL_HEIGHT); log::messageln("Screen BPP : %d", s3eSurfaceGetInt(S3E_SURFACE_PIXEL_TYPE) & S3E_SURFACE_PIXEL_SIZE_MASK); log::messageln("Screen Size : %dx%d", width, height); log::messageln("Vendor : %s", (const char*)glGetString(GL_VENDOR)); log::messageln("Renderer : %s", (const char*)glGetString(GL_RENDERER)); const char* version = (const char*)glGetString(GL_VERSION); log::messageln("Version : %s", version); s3ePointerUpdate(); if (s3ePointerGetInt(S3E_POINTER_MULTI_TOUCH_AVAILABLE)) { s3ePointerRegister(S3E_POINTER_TOUCH_EVENT, &pointerTouchEvent, 0); s3ePointerRegister(S3E_POINTER_TOUCH_MOTION_EVENT, &pointerTouchMotionEvent, 0); } else { s3ePointerRegister(S3E_POINTER_BUTTON_EVENT, &pointerEvent, 0); s3ePointerRegister(S3E_POINTER_MOTION_EVENT, &pointerMotionEvent, 0); } s3eDeviceRegister(S3E_DEVICE_UNPAUSE, applicationUnPause, 0); s3eDeviceRegister(S3E_DEVICE_PAUSE, applicationPause, 0); #elif EMSCRIPTEN log::messageln("EMSCRIPTEN build"); if (desc.w == -1 && desc.h == -1) { int fs = 0; emscripten_get_canvas_size(&desc.w, &desc.h, &fs); } if (SDL_Init(SDL_INIT_VIDEO) != 0) { log::error("Unable to initialize SDL: %s\n", SDL_GetError()); } SDL_Surface* screen; screen = SDL_SetVideoMode(desc.w, desc.h, 32, SDL_OPENGL); _displaySize = Point(desc.w, desc.h); emscripten_SDL_SetEventHandler(SDL_eventsHandler, 0); int v = EM_ASM_INT( { var p = navigator.platform; if (p == 'iPad' || p == 'iPhone' || p == 'iPod') return 1; return 0; }, 0);
void init(init_desc *desc_ptr) { Input::instance.__removeFromDebugList(); log::messageln("initialize oxygine"); if (desc_ptr) desc = *desc_ptr; #ifdef __S3E__ log::messageln("S3E build"); if (!IwGLInit()) { s3eDebugErrorShow(S3E_MESSAGE_CONTINUE, "IwGLInit failed"); return; } //init_ext(); int width = IwGLGetInt(IW_GL_WIDTH); int height = IwGLGetInt(IW_GL_HEIGHT); log::messageln("Screen BPP : %d", s3eSurfaceGetInt(S3E_SURFACE_PIXEL_TYPE) & S3E_SURFACE_PIXEL_SIZE_MASK); log::messageln("Screen Size : %dx%d", width, height); log::messageln("Vendor : %s", (const char*)glGetString( GL_VENDOR ) ); log::messageln("Renderer : %s", (const char*)glGetString( GL_RENDERER )); const char *version = (const char*)glGetString( GL_VERSION ); log::messageln( "Version : %s", version); s3ePointerUpdate(); if (s3ePointerGetInt(S3E_POINTER_MULTI_TOUCH_AVAILABLE)) { s3ePointerRegister(S3E_POINTER_TOUCH_EVENT, &pointerTouchEvent, 0); s3ePointerRegister(S3E_POINTER_TOUCH_MOTION_EVENT, &pointerTouchMotionEvent, 0); } else { s3ePointerRegister(S3E_POINTER_BUTTON_EVENT, &pointerEvent, 0); s3ePointerRegister(S3E_POINTER_MOTION_EVENT, &pointerMotionEvent, 0); } s3eDeviceRegister(S3E_DEVICE_UNPAUSE, applicationUnPause, 0); s3eDeviceRegister(S3E_DEVICE_PAUSE, applicationPause, 0); #elif EMSCRIPTEN log::messageln("EMSCRIPTEN build"); if (desc.w == -1 && desc.h == -1) { int fs = 0; emscripten_get_canvas_size(&desc.w, &desc.h, &fs); } if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { log::error("Unable to initialize SDL: %s\n", SDL_GetError()); } SDL_Surface *screen; screen = SDL_SetVideoMode(desc.w, desc.h, 32, SDL_OPENGL); _displaySize = Point(desc.w, desc.h); emscripten_SDL_SetEventHandler(SDL_eventsHandler, 0); #elif OXYGINE_SDL log::messageln("SDL build"); SDL_Init(SDL_INIT_VIDEO); SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0); SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 0); //SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1); int flags = SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN; #if TARGET_OS_IPHONE flags |= SDL_WINDOW_BORDERLESS; #endif SDL_DisplayMode mode; SDL_GetCurrentDisplayMode(0, &mode); log::messageln("display mode: %d %d", mode.w, mode.h); if (desc.w == -1 && desc.h == -1) { desc.w = 960; desc.h = 640; } if (desc.fullscreen) flags |= SDL_WINDOW_FULLSCREEN; log::messageln("creating window %d %d", desc.w, desc.h); _window = SDL_CreateWindow(desc.title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, desc.w, desc.h, flags); if (!_window) { log::error("can't create window: %s", SDL_GetError()); return; } _context = SDL_GL_CreateContext(_window); if (!_context) { log::error("can't create gl context: %s", SDL_GetError()); return; } SDL_GL_SetSwapInterval(desc.vsync ? 1 : 0); //SDL_SetEventFilter(eventsFilter, 0); #endif file::init(desc.companyName, desc.appName); init2(); }