| 162 | } |
| 163 | |
| 164 | void ShaderManager::offline(StringId64 id, ResourceManager &rm) |
| 165 | { |
| 166 | const ShaderResource *shader = (ShaderResource *)rm.get(RESOURCE_TYPE_SHADER, id); |
| 167 | |
| 168 | for (u32 i = 0; i < array::size(shader->_data); ++i) { |
| 169 | const ShaderResource::Data &data = shader->_data[i]; |
| 170 | |
| 171 | ShaderData sd; |
| 172 | sd.state = BGFX_STATE_DEFAULT; |
| 173 | sd.stencil_front = BGFX_STENCIL_NONE; |
| 174 | sd.stencil_back = BGFX_STENCIL_NONE; |
| 175 | sd.num_samplers = 0; |
| 176 | sd.program = BGFX_INVALID_HANDLE; |
| 177 | sd = hash_map::get(_shader_map, data.name, sd); |
| 178 | |
| 179 | bgfx::destroy(sd.program); |
| 180 | |
| 181 | hash_map::remove(_shader_map, data.name); |
| 182 | } |
| 183 | |
| 184 | bgfx::frame(); |
| 185 | bgfx::frame(); |
| 186 | } |
| 187 | |
| 188 | void ShaderManager::unload(Allocator &a, void *res) |
| 189 | { |