| 101 | } |
| 102 | |
| 103 | CComPtr<ID3D11UnorderedAccessView> uavFromTex(const CComPtr<ID3D11Texture2D>& tex) { |
| 104 | decltype(textureToUavMap)::iterator it = textureToUavMap.find(tex); |
| 105 | |
| 106 | if (it != textureToUavMap.end()) { |
| 107 | return it->second; |
| 108 | } else { |
| 109 | D3D11_UNORDERED_ACCESS_VIEW_DESC desc; |
| 110 | ZeroMemory(&desc, sizeof(desc)); |
| 111 | |
| 112 | D3D11_TEXTURE2D_DESC texDesc; |
| 113 | tex->GetDesc(&texDesc); |
| 114 | |
| 115 | desc.Format = texDesc.Format; |
| 116 | desc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE2D; |
| 117 | desc.Texture2D.MipSlice = 0; |
| 118 | |
| 119 | CComPtr<ID3D11UnorderedAccessView> uav = nullptr; |
| 120 | g_device->CreateUnorderedAccessView(tex, &desc, &uav); |
| 121 | |
| 122 | if (!uav) { |
| 123 | DebugBreak(); |
| 124 | } |
| 125 | |
| 126 | textureToUavMap[tex] = uav; |
| 127 | return uav; |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | void releaseResourceViews() { |
| 132 | textureToRtvMap.clear(); |