Voila j'ai effectué mes rendus pour remplir une CubeMap (LPDIRECT3DCUBETEXTURE9 m_pCubeMap) , elle a l'air d'être correctement remplit mais voila mon problème :
J'ai besoin de recupérer les 6 faces du cube puis d'acceder aux couleurs pixel par pixel, et enfin de recombiner ces textures dans une seule que je veux afficher sur tout mon écran, dans l'optique d'un projecteur panoramique.
j'ai besoin de les récuperer dans des byte et j'ai mis la CubeMap en D3DFMT_R8G8B8, donc je pense que les surfaces correspondant aux faces seront dans le même mode.
// allocation des tableaux sur lesquels je veux travailler
byte * imgout= new byte[1024*768*3];
byte **tabimg;
tabimg= new byte*[6];
D3DLOCKED_RECT pLockedRect[6];
for(int i=0;i<6;i++)
{
// LE PROBLEME EST ICI
hr=pCubeMapFace[i]->LockRect(&pLockedRect[i],NULL,D3DLOCK_READONLY);
if(hr==D3D_OK)
// la recopie ne se fait pas car on entre jamias dans le if, le LockRect ne marche pas
tabimg[i]=(byte*)pLockedRect[i].pBits;
}
}
// ensuite on fait notre traitement sur nos tableaux et on récupère un resultat dans imgout.
// on unlock les 6 surfaces de rendu
for(int i=0;i<6;i++)
{
pCubeMapFace[i]->UnlockRect();
}
// on lock la surface finale
D3DLOCKED_RECT pLockedRectFinal;
hr=pMapFinalRendu->LockRect(&pLockedRectFinal,NULL,D3DLOCK_READONLY);
if(hr==D3D_OK)
pLockedRectFinal.pBits=imgout;
// on la unlock
pMapFinalRendu->UnlockRect();
// on affiche notre surface finale a l'écran, je ne sais pas si cette fonction marche vu que le programme n'est jamias aller jusque la ;-) , de toutes façon le problème se situe avant.
m_pd3dDevice->SetRenderTarget(0,pMapFinalRendu);
voila, je pense qu'en modifiant les tableaux on modifie la valeur des pixels de la surface, et qu'elle est remise à jour avec le UnLockRect(), je me trompe ou pas?