RenderTargetPtr RenderTargetManager::createSurface(unsigned width, unsigned height) { if(overrideFormat == RenderTarget::FMT_NONE) { return RenderTargetPtr(new RenderTarget(device, width, height, RenderTarget::d3dformatWithAlpha(RSManager::get().getBackBufferFormat()), RenderTarget::SURFACE_USE)); } else { return RenderTargetPtr(new RenderTarget(device, width, height, RenderTarget::d3dformatFromFormat(overrideFormat), RenderTarget::TEXTURE_USE)); } }
RenderTargetPtr D3D9VideoBufferManager::CreateRenderTarget(TexturePtr rtTex) { int rWidth = rtTex->GetWidth(), rHeight = rtTex->GetHeight(); if (rWidth == -1 || rHeight == -1) { rWidth = Engine::Instance()->GetDeviceProperty()->Width; rHeight = Engine::Instance()->GetDeviceProperty()->Height; } IDirect3DSurface9 * pD3D9RenderTarget = NULL; D3D9RenderTarget * pTexture = new D3D9RenderTarget(mD3D9Device); pTexture->mName = rtTex->GetName(); pTexture->mWidth = rWidth; pTexture->mHeight = rHeight; pTexture->mFormat = rtTex->GetFormat(); pTexture->mMSAA = MSAA_NONE; pTexture->mTexture = rtTex; D3D9Texture * d3dTex = (D3D9Texture *)rtTex.c_ptr(); d3dTex->GetD3DTexture()->GetSurfaceLevel(0, &pTexture->mRenderTarget); mRenderTargets.Insert(pTexture->GetName(), pTexture); return RenderTargetPtr(pTexture); }
RenderTargetPtr D3D9VideoBufferManager::CreateRenderTarget(const TString128 & sName, int iWidth, int iHeight, FORMAT RenderTargetFormat, MULTI_SAMPLE MSAA) { d_assert(FindTexture(sName).IsNull()); if (!RenderSystem::Instance()->CheckRenderTargetFormat(RenderTargetFormat)) { EXCEPTION("Your device can't support texture format '" + D3D9Mapping::GetFormatString(RenderTargetFormat) + "' for render target."); } if (!RenderSystem::Instance()->CheckMSAAFormat(RenderTargetFormat, MSAA)) { EXCEPTION("Your device can't support render target format '" + D3D9Mapping::GetFormatString(RenderTargetFormat) + "' for msaa '" + D3D9Mapping::GetMSAAString(MSAA) + "'."); } int rWidth = iWidth, rHeight = iHeight; if (rWidth == -1 || rHeight == -1) { rWidth = Engine::Instance()->GetDeviceProperty()->Width; rHeight = Engine::Instance()->GetDeviceProperty()->Height; } HRESULT hr = D3D_OK; D3DFORMAT D3DFormat = D3D9Mapping::GetD3DFormat(RenderTargetFormat); D3DMULTISAMPLE_TYPE MultiSampleType = D3D9Mapping::GetD3DMultiSampleType(MSAA); DWORD MultiSampleQuality = 0; IDirect3DTexture9 * pD3D9Texture = NULL; IDirect3DSurface9 * pD3D9RenderTarget = NULL; hr = mD3D9Device->CreateRenderTarget(rWidth, rHeight, D3DFormat, MultiSampleType, MultiSampleQuality, FALSE, &pD3D9RenderTarget, NULL); D3DErrorExceptionFunction(CreateRenderTarget, hr); D3D9RenderTarget * pTexture = new D3D9RenderTarget(mD3D9Device); pTexture->mName = sName; pTexture->mRenderTarget = pD3D9RenderTarget; pTexture->mWidth = iWidth; pTexture->mHeight = iHeight; pTexture->mFormat = RenderTargetFormat; pTexture->mMSAA= MSAA; mRenderTargets.Insert(pTexture->GetName(), pTexture);; return RenderTargetPtr(pTexture); }
RenderTargetPtr TargetRenderer::createRenderTarget(ImagePtr& image) { RenderJob rj; rj.ndraws = -1; rj.lasttime_draw = 0; rj.target = RenderTargetPtr(new RenderTarget(m_renderbackend, image)); rj.discard = false; std::pair<RenderJobMap::iterator, bool> ret = m_targets.insert(std::make_pair<std::string, RenderJob>(image->getName(), rj)); return ret.first->second.target; }
RenderTargetPtr TargetRenderer::createRenderTarget(const std::string& name, uint32_t width, uint32_t height) { RenderJob rj; rj.ndraws = -1; rj.lasttime_draw = 0; rj.target = RenderTargetPtr(new RenderTarget(m_renderbackend, width, height)); rj.discard = false; std::pair<RenderJobMap::iterator, bool> ret = m_targets.insert(std::make_pair<std::string, RenderJob>(name, rj)); return ret.first->second.target; }
bool UGraphicsDevice::CreateBackBuffer() { assert(mD3dSwapChain && "Swap chain must have already been created."); ID3D11Texture2D* backBufferTex = nullptr; HRESULT hr = mD3dSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast<LPVOID*>(&backBufferTex)); if (FAILED(hr)) { LOG(LogGraphicsDevice, Error, "Failed to get texture for back buffer\n"); return false; } ID3D11RenderTargetView* backBufferRenderTarget = nullptr; hr = mD3dDevice->CreateRenderTargetView(backBufferTex, nullptr, &backBufferRenderTarget); SafeReleaseD3D(backBufferTex); if (FAILED(hr)) { LOG(LogGraphicsDevice, Error, "Failed to create render target for back buffer\n"); return false; } mD3dBackBufferRenderTargetView = RenderTargetPtr(backBufferRenderTarget, AutoReleaseD3D); return true; }
RenderTargetPtr RenderTargetManager::createTexture(unsigned width, unsigned height, D3DFORMAT fmt, D3DMULTISAMPLE_TYPE mstype, unsigned msquality) { return RenderTargetPtr(new RenderTarget(device, width, height, fmt, RenderTarget::TEXTURE_USE, mstype, msquality)); }
RenderTargetPtr RenderTargetManager::createTexture(unsigned width, unsigned height, RenderTarget::Format fmt) { return RenderTargetPtr(new RenderTarget(device, width, height, RenderTarget::d3dformatFromFormat(fmt), RenderTarget::TEXTURE_USE)); }
RenderTargetPtr RenderTargetManager::createSurface(unsigned width, unsigned height, D3DFORMAT fmt) { return RenderTargetPtr(new RenderTarget(device, width, height, fmt, RenderTarget::SURFACE_USE)); }
RenderTargetPtr RenderTargetManager::createSurface(unsigned width, unsigned height, RenderTarget::Format fmt) { return RenderTargetPtr(new RenderTarget(device, width, height, RenderTarget::d3dformatFromFormat(fmt), RenderTarget::SURFACE_USE)); }
RenderTargetPtr RenderTargetManager::createTexture(unsigned width, unsigned height, D3DFORMAT fmt) { return RenderTargetPtr(new RenderTarget(device, width, height, fmt, RenderTarget::TEXTURE_USE)); }