| 169 | |
| 170 | |
| 171 | RenderMaterial::InstancePtr RenderMaterial::getMaterialInstance(const IRenderMesh* mesh) |
| 172 | { |
| 173 | // look in cache |
| 174 | auto it = mRenderMeshToInstanceMap.find(mesh); |
| 175 | if (it != mRenderMeshToInstanceMap.end()) |
| 176 | { |
| 177 | if (!(*it).second.expired()) |
| 178 | { |
| 179 | return (*it).second.lock(); |
| 180 | } |
| 181 | } |
| 182 | |
| 183 | // create new |
| 184 | const std::vector<D3D11_INPUT_ELEMENT_DESC>& descs = mesh->getInputElementDesc(); |
| 185 | RenderMaterial::InstancePtr instance = getMaterialInstance(&descs[0], (uint32_t)descs.size()); |
| 186 | mRenderMeshToInstanceMap[mesh] = instance; |
| 187 | return instance; |
| 188 | } |
| 189 | |
| 190 | RenderMaterial::InstancePtr RenderMaterial::getMaterialInstance(const D3D11_INPUT_ELEMENT_DESC* elementDescs, uint32_t numElements) |
| 191 | { |
no test coverage detected