bool initialize(const std::vector<GLLibrary> &libs, emugl_logger_struct *log_funcs, logger_t crash_func) { set_emugl_crash_reporter(crash_func); if (log_funcs) { set_emugl_logger(log_funcs->coarse); set_emugl_cxt_logger(log_funcs->fine); } for (const auto &lib : libs) { const auto path = lib.path.c_str(); switch (lib.type) { case GLLibrary::Type::EGL: if (!init_egl_dispatch(path)) return false; break; case GLLibrary::Type::GLESv1: if (!gles1_dispatch_init(path, &s_gles1)) return false; break; case GLLibrary::Type::GLESv2: if (!gles2_dispatch_init(path, &s_gles2)) return false; break; default: break; } } if (!s_egl.initialized || !s_gles1.initialized || !s_gles2.initialized) return false; return true; }
int initLibrary(void) { // // Load EGL Plugin // if (!init_egl_dispatch()) { // Failed to load EGL printf("Failed to init_egl_dispatch\n"); return false; } // // Load GLES Plugin // if (!init_gl_dispatch()) { // Failed to load GLES ERR("Failed to init_gl_dispatch\n"); return false; } /* failure to init the GLES2 dispatch table is not fatal */ init_gl2_dispatch(); return true; }