handleSchemeNotFound error on android

Discussion of issues specific to mobile platforms such as iOS, Android, Symbian and Meego.
Posts: 129
Joined: Fri Oct 31, 2014 4:22 am

handleSchemeNotFound error on android

Postby fla666 » Fri Jul 17, 2015 6:15 pm

hi guys, does anybody have encountered the "handleSchemeNotFound " problem on android ? i found that this will slow the apk start up time heavily before it can render normally .

on Google Nexus 5 mobile phone , the first call "RenderOneFrame" will take about 500ms , if modify "handleSchemeNotFound" to an empty function, the first "renderOneFrame" become fast , but nothing can be rendered on screen .

could somebody give me some suggestion on how to optimize the app start up time , how to resolve this "handleSchemeNotFound " error ? and will shader cache be help on android ? thanks !

in my app , i create all materials from code, and initialize the ShaderGenerator as following :

Code: Select all

initialiseRTShaderSystem(Ogre::SceneManager* sceneMgr)
            if (Ogre::RTShader::ShaderGenerator::initialize())
                mShaderGenerator = Ogre::RTShader::ShaderGenerator::getSingletonPtr();


                // Create and register the material manager listener if it doesn't exist yet.
                if (mMaterialMgrListener == NULL) {
                    mMaterialMgrListener = new ShaderGeneratorTechniqueResolverListener(mShaderGenerator);

            return true;

and ShaderGeneratorTechniqueResolverListener defined as following :

Code: Select all

class ShaderGeneratorTechniqueResolverListener : public MaterialManager::Listener

    ShaderGeneratorTechniqueResolverListener(RTShader::ShaderGenerator* pShaderGenerator)
        mShaderGenerator = pShaderGenerator;

    virtual Technique* handleSchemeNotFound(unsigned short schemeIndex,
        const String& schemeName, Material* originalMaterial, unsigned short lodIndex,
        const Renderable* rend)
        // Case this is the default shader generator scheme.
        if (schemeName == RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME)
            MaterialRegisterIterator itFind = mRegisteredMaterials.find(originalMaterial);
            bool techniqueCreated = false;

            // This material was not registered before.
            if (itFind == mRegisteredMaterials.end())
                techniqueCreated = mShaderGenerator->createShaderBasedTechnique(
            mRegisteredMaterials[originalMaterial] = techniqueCreated;

        return NULL;

    typedef std::map<Material*, bool>       MaterialRegisterMap;
    typedef MaterialRegisterMap::iterator   MaterialRegisterIterator;

    MaterialRegisterMap             mRegisteredMaterials;       // Registered material map.
    RTShader::ShaderGenerator*      mShaderGenerator;           // The shader generator instance.
0 x

Return to “Mobile Devices”

Who is online

Users browsing this forum: No registered users and 1 guest