Exemplo n.º 1
0
    HDRPostProcessor::TempRenderTarget* HDRPostProcessor::GetTempRenderTarget(U32 width, U32 height, DXGI_FORMAT format, U32 mipMapLevels) {

        // Check if there is free renderTarget that has already been created

        for(auto it = tempRenderTargets.begin(); it != tempRenderTargets.end(); ++it) {
            TempRenderTarget* tempRT = *it;
            RenderTarget* rt = tempRT->renderTarget;
            if (!(tempRT->inUse) &&
                rt->GetWidth() == width &&
                rt->GetHeight() == height &&
                rt->GetRTViewFormat() == format &&
                rt->GetMipMapLevels() == mipMapLevels) {
                return tempRT;
            }
        }

        // If there are no specified renderTargets that are free, create one

        RenderTarget* renderTarget = RenderTarget::Create(lowLevelGraphics->GetDevice(), width, height, format, mipMapLevels);
        TempRenderTarget* tempRenderTarget = new TempRenderTarget(renderTarget);
        tempRenderTargets.push_back(tempRenderTarget);
        return tempRenderTarget;
    }