Sauver un backbuffer avec multisampling
bonjour j'utilise une application DX10 avec multisampling activé
mes sauvegardes du backbuffer me donnent un fichier de taille normale, emplit de noir, alors que l'application fonctionne bien à l'écran avec le multisampling activé
j'initialise mon application avec les DXUT
voila comment je m'y prends
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
// acquiert backbuffer
ID3D10Resource* pBackbufferRes;
const DXGI_SURFACE_DESC* pd3dsdBackBuffer = DXUTGetDXGIBackBufferSurfaceDesc(); // acquiert description du backbuffer
DXUTGetD3D10RenderTargetView()->GetResource( &pBackbufferRes); // acquiert le contenu de la render target
ID3D10Texture2D* pTexture; // texture de destination
D3D10_TEXTURE2D_DESC texDesc; // descripteur de texture
texDesc.ArraySize = 1;
texDesc.BindFlags = 0;
texDesc.CPUAccessFlags = 0;
texDesc.Width = pd3dsdBackBuffer->Width; // largeur backbuffer
texDesc.Height = pd3dsdBackBuffer->Height; // hauteur backbuffer
texDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
texDesc.BindFlags = D3D10_BIND_RENDER_TARGET;
texDesc.SampleDesc.Count = 1;
texDesc.SampleDesc.Quality = 0;
texDesc.MipLevels = 1;
texDesc.MiscFlags = 0;
texDesc.Usage = D3D10_USAGE_DEFAULT;
V( pd3dDevice->CreateTexture2D( &texDesc, NULL, &pTexture) ); // créé texture de destination
pd3dDevice->ResolveSubresource( pTexture, D3D10CalcSubresource( 0,0,1), pBackbufferRes, 0, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB ); // copy texture multisampled
V( D3DX10SaveTextureToFile( pTexture, D3DX10_IFF_DDS, nomfichier2 ) ); // sauve vers fichier dds |
donc je ne capture pas ce qu'il faut ou le converti mal de multisamplé vers un format normal
j 'ai essayé sans D3D10CalcSubresource(), idem
des idées ??