bool CD3D11Driver::setupGBuffer() { if (mGBuffers[0]) return false; ITextureManager* textureManager = ITextureManager::getInstance(); std::string textureNames[] = { "gbuffer0", "gbuffer1", "gbuffer2", "gbuffer3" }; E_GI_FORMAT formats[] = { EGF_R32G32B32A32_FLOAT, EGF_R8G8B8A8_UNORM, EGF_R8G8B8A8_UNORM, EGF_R8G8B8A8_UNORM }; for (u32 i = 0; i < EGT_GBUFFER_COUNT; i++) { IRenderTarget* pTarget = textureManager->createRenderTarget(textureNames[i], 0, 0, formats[i]); assert("set up gbuffer failed!"); mGBuffers[i] = pTarget; } return true; }