Пример #1
0
bool
Shader::loadAndCompile(
    const char* acVertexFilename,
    const char* acFragmentFilename)
{
    char *acResource = 0;
    uint uiLength = 0;
    
    char *acVertexPgmSrc = 0;
    size_t uiVertexPgmLength = 0;
    
    char *acFragmentPgmSrc = 0;
    size_t uiFragmentPgmLength = 0;
    
    FindResourcePath(acVertexFilename, &acResource, &uiLength);
    LoadTextFromFile(acResource, &acVertexPgmSrc, &uiVertexPgmLength);
    if(acResource)
        free(acResource);

    FindResourcePath(acFragmentFilename, &acResource, &uiLength);
    LoadTextFromFile(acResource, &acFragmentPgmSrc, &uiFragmentPgmLength);

    if(acResource)
        free(acResource);

    bool bSuccess = compile(acVertexPgmSrc, acFragmentPgmSrc);

    if(acVertexPgmSrc)
        free(acVertexPgmSrc);
    
    if(acFragmentPgmSrc)
        free(acFragmentPgmSrc);
        
    return bSuccess;
}
Пример #2
0
	Ogre::String Utils::FindResourcePath(Ogre::String path, Ogre::String filename)
	{
		boost::filesystem::path bpath(path.c_str());
		for (boost::filesystem::directory_iterator i(bpath); i != boost::filesystem::directory_iterator(); i++)
		{
			Ogre::String file = Ogre::String((*i).path().leaf().c_str());
			if (file == filename) return (*i).path().file_string();
			if (boost::filesystem::is_directory((*i)))
			{
				Ogre::String csearch = FindResourcePath((*i).path().directory_string().c_str(), filename);
				if (csearch != "") return csearch;
			}
		}
		return "";
	}