コード例 #1
0
ファイル: SoftParticles.cpp プロジェクト: denghc/danmugame
SoftParticles::~SoftParticles()
{
	OnD3D11DestroyDevice();
}
コード例 #2
0
HRESULT DX11CustomRenderTarget::OnResize( ID3D11Device* pd3dDevice, UINT width, UINT height)
{
	HRESULT hr = S_OK;

	if (width == m_Width && height == m_Height)	return hr;
	OnD3D11DestroyDevice();

	m_Width = width;
	m_Height = height;

	m_Targets = new ID3D11Texture2D*[m_uNumTargets];
	m_TargetsRTV = new ID3D11RenderTargetView*[m_uNumTargets];
	m_TargetsSRV = new ID3D11ShaderResourceView*[m_uNumTargets];
	
	//creating targets
	{
		for (UINT i = 0; i < m_uNumTargets; i++)
		{
			D3D11_TEXTURE2D_DESC textureDesc;
			ZeroMemory(&textureDesc, sizeof(D3D11_TEXTURE2D_DESC));
			textureDesc.Width = m_Width;
			textureDesc.Height = height;
			textureDesc.MipLevels = 1;
			textureDesc.ArraySize = 1;
			textureDesc.Format = m_TextureFormats[i];
			//TODO fix this for MSAA/CSAA
			textureDesc.SampleDesc.Count = 1;
			textureDesc.SampleDesc.Quality = 0;
			textureDesc.Usage = D3D11_USAGE_DEFAULT;
			textureDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
			textureDesc.CPUAccessFlags = 0;
			textureDesc.MiscFlags = 0;
	
			D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
			ZeroMemory(&rtvDesc, sizeof(D3D11_RENDER_TARGET_VIEW_DESC));
			rtvDesc.Format = textureDesc.Format;
			rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
			rtvDesc.Texture2D.MipSlice = 0;

			D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
			ZeroMemory(&srvDesc, sizeof(D3D11_SHADER_RESOURCE_VIEW_DESC));
			srvDesc.Format = textureDesc.Format;
			srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
			srvDesc.Texture2D.MipLevels = 1;
			srvDesc.Texture2D.MostDetailedMip = 0;

			V_RETURN(pd3dDevice->CreateTexture2D(&textureDesc, NULL, &m_Targets[i]));
			V_RETURN(pd3dDevice->CreateRenderTargetView(m_Targets[i], &rtvDesc, &m_TargetsRTV[i]));
			V_RETURN(pd3dDevice->CreateShaderResourceView(m_Targets[i], &srvDesc, &m_TargetsSRV[i]));
		}
	}

	//creating depth stencil
	{
		D3D11_TEXTURE2D_DESC desc;
		ZeroMemory(&desc, sizeof(D3D11_TEXTURE2D_DESC));
		desc.Usage = D3D11_USAGE_DEFAULT;
		desc.Format = DXGI_FORMAT_R32_TYPELESS;
		desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_DEPTH_STENCIL;
		desc.MipLevels = 1;
		desc.ArraySize = 1;
		desc.SampleDesc.Count = 1;
		desc.SampleDesc.Quality = 0;
		desc.CPUAccessFlags = 0;
		desc.Height = height;
		desc.Width = width;
		V_RETURN(pd3dDevice->CreateTexture2D(&desc, NULL, &m_DepthStencil));


		D3D11_DEPTH_STENCIL_VIEW_DESC descDSV;
		ZeroMemory(&descDSV, sizeof(D3D11_DEPTH_STENCIL_VIEW_DESC));
		descDSV.Format = DXGI_FORMAT_D32_FLOAT;
		if (desc.SampleDesc.Count > 1)	{
			descDSV.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS;
		} else {
			descDSV.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
			descDSV.Texture2D.MipSlice = 0;
		}

		V_RETURN(pd3dDevice->CreateDepthStencilView(m_DepthStencil, &descDSV, &m_DepthStencilDSV));

		D3D11_SHADER_RESOURCE_VIEW_DESC descSRV;
		ZeroMemory(&descSRV, sizeof(D3D11_SHADER_RESOURCE_VIEW_DESC));
		descSRV.Format = DXGI_FORMAT_R32_FLOAT;
		descSRV.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
		descSRV.Texture2D.MipLevels = 1;
		descSRV.Texture2D.MostDetailedMip = 0;

		V_RETURN(pd3dDevice->CreateShaderResourceView(m_DepthStencil, &descSRV, &m_DepthStencilSRV));
	}

	if (m_dCudaFloat) {
		for (UINT i = 0; i < m_uNumTargets; i++) {
			cutilSafeCall(cudaGraphicsUnregisterResource(m_dCudaFloat[i]));
		}
		SAFE_DELETE_ARRAY(m_dCudaFloat)
	}

	m_dCudaFloat = new cudaGraphicsResource*[m_uNumTargets];
	for (UINT i = 0; i < m_uNumTargets; i++) {
		cutilSafeCall(cudaGraphicsD3D11RegisterResource(&m_dCudaFloat[i], m_Targets[i], cudaGraphicsRegisterFlagsNone));
		cutilSafeCall(cudaGraphicsResourceSetMapFlags(m_dCudaFloat[i], cudaGraphicsMapFlagsReadOnly));
	}

	return hr;
}
コード例 #3
0
ファイル: PerlinFire.cpp プロジェクト: denghc/danmugame
PerlinFire::~PerlinFire()
{
	OnD3D11DestroyDevice();
}
コード例 #4
0
DX11Sensor::~DX11Sensor()
{
	OnD3D11DestroyDevice();
}
コード例 #5
0
ファイル: GaussianMain.cpp プロジェクト: denghc/danmugame
GaussianMain::~GaussianMain()
{
	OnD3D11DestroyDevice();
}
コード例 #6
0
ファイル: LightningMain.cpp プロジェクト: denghc/danmugame
LightingMain::~LightingMain()
{
	OnD3D11DestroyDevice();
}