コード例 #1
0
ShaderProgram *MaterialManager::createProgramFromFile(String programPath) {
	OSFileEntry entry(programPath, OSFileEntry::TYPE_FILE);
	
	for(int m=0; m < shaderModules.size(); m++) {
		PolycodeShaderModule *shaderModule = shaderModules[m];
		if(shaderModule->acceptsExtension(entry.extension)) {
			ShaderProgram *newProgram = shaderModule->createProgramFromFile(entry.extension, entry.fullPath);
			return newProgram;
		}
	}
	return NULL;
}
コード例 #2
0
void ResourceManager::parsePrograms(const String& dirPath, bool recursive) {
	vector<OSFileEntry> resourceDir;
	resourceDir = OSBasics::parseFolder(dirPath, false);
	for(int i=0; i < resourceDir.size(); i++) {	
		if(resourceDir[i].type == OSFileEntry::TYPE_FILE) {
			for(int m=0; m < shaderModules.size(); m++) {
				PolycodeShaderModule *shaderModule = shaderModules[m];
				if(shaderModule->acceptsExtension(resourceDir[i].extension)) {
					Resource *newProgram = shaderModule->createProgramFromFile(resourceDir[i].extension, resourceDir[i].fullPath);
					if(newProgram) {
						newProgram->setResourceName(resourceDir[i].name);
						newProgram->setResourcePath(resourceDir[i].fullPath);				
						resources.push_back(newProgram);					
					}
				}
			}
		} else {
			if(recursive)
				parsePrograms(dirPath+"/"+resourceDir[i].name, true);
		}
	}	
}