2013-07-03 1 views
2

Впервые я разрабатываю приложение для Android с cocos2d-2.0-x-2.0.4 на Samsung GT-N8000, поэтому помогите мне, если кто-нибудь имеет представление о Эта тема .Шейдеры не работают в Android-устройстве, когда устройство переходит в режим блокировки и возобновлено.

Все работает нормально с шейдерами на этом устройстве, но я обнаружил ошибку, когда устройство переходит в режим блокировки и разблокировано.

+0

Какая ошибка? Как вы определили, что проблема заключается в ваших шейдерах? Что делает ваше приложение? – GraphicsMuncher

ответ

2

Ya. У нас была та же проблема. Независимо от того, какие пользовательские шейдеры, добавленные в «shadercache», не работают, когда приложение переходит на задний план и возобновляется с их. Просто попробуйте сбросить свои пользовательские шейдеры и добавить новый шейдер вместо него.

Для получения дополнительной информации проверьте CCShaderCache::reloadDefaultShaders(), который называется вызванным возобновлением приложения.

CCGLProgram * program = CCShaderCache::sharedShaderCache()->programForKey("customshader"); 
    //reset the old 
    if(program) 
     program->reset(); 

{ 
    CCGLProgram * p = new CCGLProgram(); 
    ..... 
    ..... 
    p->updateUniforms(); 
    //add new shader 
    CCShaderCache::sharedShaderCache()->addProgram(p, "customshader"); 
    p->release(); 

}