Click here to Skip to main content
15,889,216 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hey, guys:
I want to Copy a ID3D10Texture2D surface to a HBitmap in dx10,but the function ID3D10Texture2D::Map returns an error of 0x80070057.I didn't know how to solve the problem,anyone can help me ?
The code:

C#
ID3D10Texture2D* pBackBuffer = NULL;
HRESULT hRes = m_pSwapChain->GetBuffer( 0, __uuidof( ID3D10Texture2D ), ( LPVOID* )&pBackBuffer );
if (FAILED(hRes))
{
	DEBUG_ERR(( "DX10:GetFramePre:m_pSwapChain->GetBuffer Failed  0x%x" LOG_CR,hRes));
	return hRes;
}
DEBUG_MSG(( "DX10:GetFramePre:m_pSwapChain->GetBuffer OK " LOG_CR)); //Test OK

ID3D10Texture2D* pSurfTemp = NULL;

D3D10_TEXTURE2D_DESC desc;
ZeroMemory( &desc, sizeof(desc) );
desc.Width = frame.m_Size.cx;
desc.Height = frame.m_Size.cy;
desc.MipLevels = 1;
desc.ArraySize = 1;
desc.Format = s_bbFormat;
desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0;
desc.Usage = D3D10_USAGE_DEFAULT;
desc.BindFlags = D3D10_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE;
desc.CPUAccessFlags = 0;
desc.MiscFlags = 0;

hRes = m_pDevice->CreateTexture2D( &desc, NULL, &pSurfTemp );

if(FAILED(hRes))
{
	DEBUG_ERR(("DX10:GetFrame:m_pDevice->CreateTexture2D() Failed 0x%x" LOG_CR,hRes));
	return hRes;
}

m_pDevice->CopyResource(pSurfTemp,pBackBuffer); 

DEBUG_ERR(("DX10:GetFrame:m_pDevice->CopyResource() OK " LOG_CR));// Test OK

D3D10_MAPPED_TEXTURE2D ImageTemp;

hRes = pSurfTemp->Map( 0 , D3D10_MAP_READ, 0 ,&ImageTemp);//this returns an error;
if(FAILED(hRes))
{
	DEBUG_ERR(("DX10:GetFrame:pSurfTemp->Map Failed 0x%x" LOG_CR, hRes));
	return hRes;
}
DEBUG_MSG(("DX10:GetFrame:pSurfTemp->Map OK " LOG_CR));
Posted
Updated 19-Aug-12 21:25pm
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900