/** * Initialize an EGL context for the current display. */ int Engine::InitDisplay(android_app* app) { if (!initialized_resources_) { gl_context_->Init(app_->window); LoadResources(); initialized_resources_ = true; } else if(app->window != gl_context_->GetANativeWindow()) { // Re-initialize ANativeWindow. // On some devices, ANativeWindow is re-created when the app is resumed assert(gl_context_->GetANativeWindow()); UnloadResources(); gl_context_->Invalidate(); app_ = app; gl_context_->Init(app->window); LoadResources(); initialized_resources_ = true; } else { // initialize OpenGL ES and EGL if (EGL_SUCCESS == gl_context_->Resume(app_->window)) { UnloadResources(); LoadResources(); } else { assert(0); } } ShowUI(); // Initialize GL state. glEnable(GL_CULL_FACE); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); // Note that screen size might have been changed glViewport(0, 0, gl_context_->GetScreenWidth(), gl_context_->GetScreenHeight()); renderer_.UpdateViewport(); tap_camera_.SetFlip(1.f, -1.f, -1.f); tap_camera_.SetPinchTransformFactor(2.f, 2.f, 8.f); return 0; }
void Engine::TrimMemory() { LOGI("Trimming memory"); gl_context_->Invalidate(); }