bool Prism::Surface::SetTexture(const std::string& aResourceName, const std::string& aFileName, bool aUseSRGB) { aUseSRGB; DL_ASSERT_EXP(aFileName != "" , CU::Concatenate("Shader resource ( %s ) tried to use invalid filePath", aResourceName.c_str())); Texture* tex = Engine::GetInstance()->GetTextureContainer()->GetTexture(aFileName); ID3DX11EffectShaderResourceVariable* shaderVar = myEffect->GetEffect()->GetVariableByName(aResourceName.c_str())->AsShaderResource(); if (shaderVar->IsValid() == false) { std::string errorMsg = "Failed to get ShaderResource: " + aResourceName; //DL_MESSAGE_BOX(errorMsg.c_str(), "Surface Error", MB_ICONWARNING); RESOURCE_LOG(errorMsg.c_str()); return false; } if (aResourceName == "EmissiveTexture") { myEmissive = true; } myTextures.Add(tex); myShaderResources.Add(tex->GetShaderView()); myShaderResourceViews.Add(shaderVar); myFilePaths.Add(aFileName); myShaderResourceNames.Add(aResourceName); return true; }
void Prism::Surface::ReloadSurface() { myTextures.RemoveAll(); myShaderResourceViews.RemoveAll(); myShaderResources.RemoveAll(); for (int i = 0; i < myFilePaths.Size(); ++i) { Texture* tex = Engine::GetInstance()->GetTextureContainer()->GetTexture(myFilePaths[i]); ID3DX11EffectShaderResourceVariable* shaderVar = myEffect->GetEffect()->GetVariableByName(myShaderResourceNames[i].c_str())->AsShaderResource(); if (shaderVar->IsValid() == false) { std::string errorMsg = "Failed to get ShaderResource: " + myShaderResourceNames[i]; //DL_MESSAGE_BOX(errorMsg.c_str(), "Surface Error", MB_ICONWARNING); RESOURCE_LOG(errorMsg.c_str()); } myTextures.Add(tex); myShaderResources.Add(tex->GetShaderView()); myShaderResourceViews.Add(shaderVar); } }