int SGL_Init(void) { int error = SDL_Init(SDL_INIT_EVERYTHING); if(error != 0) { SDL_LogCritical(SDL_LOG_CATEGORY_APPLICATION, SDL_GetError()); return error; } error = IMG_Init(IMG_INIT_PNG); if (error == 0) { SDL_LogCritical(SDL_LOG_CATEGORY_APPLICATION, SDL_GetError()); return error; } return 0; }
static int sdl_init(void) { uint32_t subSystems = SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_EVENTS | SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER; SDL_version compiledVers, linkedVers; if (SDL_WasInit(subSystems) != subSystems) { if (SDL_Init(subSystems) != 0) { SDL_LogCritical( SDL_LOG_CATEGORY_APPLICATION, "%s: SDL startup error..", LITE3D_CURRENT_FUNCTION); return LITE3D_FALSE; } } SDL_VERSION(&compiledVers); SDL_GetVersion(&linkedVers); if (compiledVers.major != linkedVers.major) { SDL_LogCritical( SDL_LOG_CATEGORY_APPLICATION, "SDL version mismatch.."); SDL_Quit(); return LITE3D_FALSE; } SDL_LogInfo( SDL_LOG_CATEGORY_APPLICATION, "SDL Version %d.%d.%d", (int) linkedVers.major, (int) linkedVers.minor, (int) linkedVers.patch); return LITE3D_TRUE; }
static int callback(LuaThread *t) { int ret = -1; SDL_AtomicIncRef(&t->ref); if (lua_pcall(t->L, lua_gettop(t->L) - 1, 1, 0) != LUA_OK) SDL_LogCritical(SDL_LOG_CATEGORY_SYSTEM, "%s", lua_tostring(t->L, -1)); else ret = lua_tointeger(t->L, -1); destroy(t); return ret; }
//------------------------------------------------------------------------- // CheckForEpisodes() - CHECK FOR VERSION/EXTESION //------------------------------------------------------------------------- void CheckForEpisodes(void) { Sint16 i; #if (GAME_VERSION != SHAREWARE_VERSION) bstone::FileStream stream("VSWAP.VSI"); if (stream.is_open()) strcpy(extension, "VSI"); #else bstone::FileStream stream("VSWAP.FSW"); if (stream.is_open()) strcpy(extension, "FSW"); #endif else { SDL_LogCritical(SDL_LOG_CATEGORY_APPLICATION, "%s\n", "No data files found."); exit(0); } for (i=0;i<mv_NUM_MOVIES;i++) strcat(Movies[i].FName,extension); #ifdef ACTIVATE_TERMINAL strcat(term_com_name,extension); strcat(term_msg_name,extension); #endif strcat(PageFileName,extension); strcat(audioname,extension); strcat(demoname,extension); #if DUAL_SWAP_FILES strcat(AltPageFileName,extension); ShadowsAvail = (!findfirst(AltPageFileName,&f,FA_ARCH)); #endif }
static int init_platform_gl_extensions(lite3d_video_settings *settings) { SDL_SysWMinfo wminfo; SDL_VERSION(&wminfo.version); if (!SDL_GetWindowWMInfo(gRenderWindow, &wminfo)) { SDL_LogWarn( SDL_LOG_CATEGORY_APPLICATION, "SDL_GetWindowWMInfo: %s", SDL_GetError()); return LITE3D_FALSE; } #ifndef GLES # ifdef PLATFORM_Windows if (!WGLEW_ARB_extensions_string) { SDL_LogWarn( SDL_LOG_CATEGORY_APPLICATION, "SDL_GetWindowWMInfo: %s", SDL_GetError()); return LITE3D_FALSE; } SDL_LogDebug( SDL_LOG_CATEGORY_APPLICATION, "%s: WGL Extensions %s", LITE3D_CURRENT_FUNCTION, (char *) wglGetExtensionsStringARB(GetDC(wminfo.info.win.window))); # elif defined PLATFORM_Linux if (!GLXEW_VERSION_1_3) { SDL_LogCritical( SDL_LOG_CATEGORY_APPLICATION, "%s: GLX v1.3 not supported..", LITE3D_CURRENT_FUNCTION); return LITE3D_FALSE; } SDL_LogDebug( SDL_LOG_CATEGORY_APPLICATION, "%s: GLX Client %s", LITE3D_CURRENT_FUNCTION, (char *) glXGetClientString(wminfo.info.x11.display, 1)); SDL_LogDebug( SDL_LOG_CATEGORY_APPLICATION, "%s: GLX Server %s", LITE3D_CURRENT_FUNCTION, (char *) glXQueryServerString(wminfo.info.x11.display, 0, 1)); SDL_LogDebug( SDL_LOG_CATEGORY_APPLICATION, "%s: GLX Extensions %s", LITE3D_CURRENT_FUNCTION, (char *) glXQueryExtensionsString(wminfo.info.x11.display, 0)); # endif #endif return LITE3D_TRUE; }
int lite3d_video_open(lite3d_video_settings *settings, int hideConsole) { uint32_t windowFlags; SDL_DisplayMode displayMode; SDL_assert(settings); #ifdef PLATFORM_Windows if (hideConsole) { FreeConsole(); } #endif 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, settings->colorBits > 24 ? 8 : 0); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_ACCUM_RED_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_ACCUM_GREEN_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_ACCUM_BLUE_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_ACCUM_ALPHA_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); #ifndef GLES /* Specify openGL context */ if (settings->FSAA > 1) { SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, settings->FSAA); } if (settings->glProfile == LITE3D_GL_PROFILE_CORE) { SDL_LogInfo( SDL_LOG_CATEGORY_APPLICATION, "Setting Core OpenGL Profile"); SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); set_opengl_version(settings); } else if (settings->glProfile == LITE3D_GL_PROFILE_COMPATIBILITY) { SDL_LogInfo( SDL_LOG_CATEGORY_APPLICATION, "Setting Compatibility OpenGL Profile"); SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY); set_opengl_version(settings); } else { SDL_LogInfo( SDL_LOG_CATEGORY_APPLICATION, "Using Default OpenGL Profile"); SDL_LogInfo( SDL_LOG_CATEGORY_APPLICATION, "Using Default OpenGL Version"); } #endif #ifdef WITH_GLES2 SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); #elif WITH_GLES3 SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); #endif windowFlags = SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN; if (settings->fullscreen) { windowFlags |= SDL_WINDOW_FULLSCREEN; windowFlags |= SDL_WINDOW_BORDERLESS; } if (settings->screenWidth == 0 || settings->screenHeight == 0) { if (!lite3d_video_get_display_size( &settings->screenWidth, &settings->screenHeight)) { SDL_LogWarn( SDL_LOG_CATEGORY_APPLICATION, "lite3d_video_get_display_size failed"); return LITE3D_FALSE; } } /* setup render window */ gRenderWindow = SDL_CreateWindow( settings->caption, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, settings->screenWidth, settings->screenHeight, windowFlags); if (!gRenderWindow) { SDL_LogCritical( SDL_LOG_CATEGORY_APPLICATION, "%s: SDL_CreateWindow failed..", LITE3D_CURRENT_FUNCTION); return LITE3D_FALSE; } SDL_LogInfo( SDL_LOG_CATEGORY_APPLICATION, "%s: render window created %dx%d (%s)", LITE3D_CURRENT_FUNCTION, settings->screenWidth, settings->screenHeight, settings->fullscreen ? "fullscreen" : "windowed"); /* Create an OpenGL context associated with the window. */ gGLContext = SDL_GL_CreateContext(gRenderWindow); if (!gGLContext) { SDL_LogCritical( SDL_LOG_CATEGORY_APPLICATION, "%s: GL Context create failed..", LITE3D_CURRENT_FUNCTION); return LITE3D_FALSE; } /* set gl context */ SDL_GL_MakeCurrent(gRenderWindow, gGLContext); SDL_GetWindowDisplayMode(gRenderWindow, &displayMode); SDL_LogInfo( SDL_LOG_CATEGORY_APPLICATION, "%s: selected pixel format: %d bpp, %s", LITE3D_CURRENT_FUNCTION, SDL_BITSPERPIXEL(displayMode.format), SDL_GetPixelFormatName(displayMode.format)); SDL_GL_SetSwapInterval(settings->vsync ? 1 : 0); if (!init_gl_extensions(settings)) { SDL_LogWarn( SDL_LOG_CATEGORY_APPLICATION, "init_gl_extensions failed"); lite3d_video_close(); return LITE3D_FALSE; } if (!settings->hidden) { SDL_ShowWindow(gRenderWindow); } return LITE3D_TRUE; }