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);
}
Esempio n. 4
0
	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;
	}
Esempio n. 5
0
	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;
	}
Esempio n. 6
0
	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));
}
Esempio n. 10
0
RenderTargetPtr RenderTargetManager::createSurface(unsigned width, unsigned height, RenderTarget::Format fmt) {
	return RenderTargetPtr(new RenderTarget(device, width, height, RenderTarget::d3dformatFromFormat(fmt), RenderTarget::SURFACE_USE));
}
Esempio n. 11
0
RenderTargetPtr RenderTargetManager::createTexture(unsigned width, unsigned height, D3DFORMAT fmt) {
	return RenderTargetPtr(new RenderTarget(device, width, height, fmt, RenderTarget::TEXTURE_USE));
}