//-------------------------------------------------------------------------------------- CPUTMaterial *CPUTMaterial::CreateMaterial( const cString &absolutePathAndFilename, const cString &modelSuffix, const cString &meshSuffix, char **pShaderMacros, // Note: this is honored only on first load. Subsequent GetMaterial calls will return the material with shaders as compiled with original macros. int numSystemMaterials, cString *pSystemMaterialNames ){ // material was not in the library, so load it #ifdef CPUT_FOR_DX11 CPUTMaterial *pMaterial = new CPUTMaterialDX11(); #else #error You must supply a target graphics API (ex: #define CPUT_FOR_DX11), or implement the target API for this file. #endif CPUTResult result = pMaterial->LoadMaterial(absolutePathAndFilename, modelSuffix, meshSuffix, pShaderMacros, numSystemMaterials, pSystemMaterialNames ); ASSERT( CPUTSUCCESS(result), _L("\nError - CPUTAssetLibrary::GetMaterial() - Error in material file: '")+absolutePathAndFilename+_L("'") ); UNREFERENCED_PARAMETER(result); // add material to material library list // cString finalName = pMaterial->MaterialRequiresPerModelPayload() ? absolutePathAndFilename + modelSuffix + meshSuffix : absolutePathAndFilename; // CPUTAssetLibrary::GetAssetLibrary()->AddMaterial( finalName, pMaterial ); CPUTAssetLibrary::GetAssetLibrary()->AddMaterial( absolutePathAndFilename, pMaterial ); return pMaterial; }
//-------------------------------------------------------------------------------------- CPUTMaterial *CPUTMaterial::CreateMaterial( const cString &absolutePathAndFilename, const CPUTModel *pModel, int meshIndex, const char **pShaderMacros, // Note: this is honored only on first load. Subsequent GetMaterial calls will return the material with shaders as compiled with original macros. int numSystemMaterials, cString *pSystemMaterialNames, int externalCount, cString *pExternalName, float4 *pExternals, int *pExternalOffset, int *pExternalSize ){ // Create the material and load it from file. //#ifdef CPUT_FOR_DX11 // CPUTMaterial *pMaterial = new CPUTMaterialDX11(); //#elif (defined(CPUT_FOR_OGL) || defined(CPUT_FOR_OGLES)) // CPUTMaterial *pMaterial = new CPUTMaterialOGL(); //#else // #error You must supply a target graphics API (ex: #define CPUT_FOR_DX11), or implement the target API for this file. //#endif // pMaterial->mpSubMaterials = NULL; CPUTMaterial* pMaterial = new CPUTMaterial(); CPUTResult result = pMaterial->LoadMaterial( absolutePathAndFilename, pModel, meshIndex, pShaderMacros, numSystemMaterials, pSystemMaterialNames, externalCount, pExternalName, pExternals, pExternalOffset, pExternalSize ); ASSERT( CPUTSUCCESS(result), _L("\nError - CPUTAssetLibrary::GetMaterial() - Error in material file: '")+absolutePathAndFilename+_L("'") ); UNREFERENCED_PARAMETER(result); // Add the material to the asset library. CPUTAssetLibrary::GetAssetLibrary()->AddMaterial( absolutePathAndFilename, _L(""), _L(""), pMaterial, pShaderMacros ); return pMaterial; }
CPUTMaterial *CPUTMaterial::CreateMaterial( const cString &absolutePathAndFilename, const CPUTModel *pModel, int meshIndex ) { // material was not in the library, so load it #ifdef CPUT_FOR_DX11 CPUTMaterial *pMaterial = new CPUTMaterialDX11(); #else #error You must supply a target graphics API (ex: #define CPUT_FOR_DX11), or implement the target API for this file. #endif CPUTResult result = pMaterial->LoadMaterial(absolutePathAndFilename, pModel, meshIndex); ASSERT( CPUTSUCCESS(result), _L("\nError - CPUTAssetLibrary::GetMaterial() - Error in material file: '")+absolutePathAndFilename+_L("'") ); // add material to material library list if( pModel && pMaterial->MaterialRequiresPerModelPayload() ) { CPUTAssetLibrary::GetAssetLibrary()->AddMaterial( absolutePathAndFilename, pMaterial, pModel, meshIndex ); } else { CPUTAssetLibrary::GetAssetLibrary()->AddMaterial( absolutePathAndFilename, pMaterial ); } return pMaterial; }