Bonjour à tous,
j'essaie de lire les données d'une texture, en vain! Quand j'essaie d'écrire dans un fichier les couleurs qui la composent, les unes après les autres, rien ne marche! Quelqu'un peut-il m'aider? Voila mon code de création de texture :
if(!m_FileName)
return;
if(m_Texture!=NULL) {
m_Texture->Release();
m_Texture = NULL;
}
D3DXIMAGE_INFO info;
ZeroMemory( &info, sizeof(D3DXIMAGE_INFO));
if( FAILED(D3DXGetImageInfoFromFile( m_FileName, &info))) {
ofstream o("stderr.txt");
o << "Impossible de charger le fichier image!" << endl;
o.close();
}
m_Height = info.Height;
m_Width = info.Width;
m_ColorKey = ColorKey;
if(FAILED(D3DXCreateTextureFromFileEx( DXObject::m_3DDevice,
m_FileName,
m_Width,
m_Height,
1,
0,
D3DFMT_UNKNOWN,
D3DPOOL_MANAGED,
D3DX_DEFAULT,
D3DX_DEFAULT,
ColorKey,
&info,
NULL,
&m_Texture))) {
ofstream o("stderr.txt");
o << "Impossible de charger le fichier image!" << endl;
o.close();
}
et voici celui ou je cherche à lire les données :
D3DLOCKED_RECT donnees;
ZeroMemory( &donnees, sizeof(D3DLOCKED_RECT));
HRESULT hr;
hr = m_Texture->LockRect(0,
&donnees,
NULL,
0);
if(FAILED(hr)) {
MessageBox(NULL, "Marche pas!", "Erreur!", MB_OK);
return;
}
D3DCOLOR *pixels = (D3DCOLOR *)donnees.pBits;
ofstream fo("sss.txt");
for(int y=0; y<m_Height; y++) {
for(int x=0; x<m_Width; x++) {
fo << (*pixels) << ' ' ;
pixels++;
}
fo << endl;
}
fo.close();
m_Texture->UnlockRect(0);
Voila, à la sortie j'obtiens un fichier qui est complètement incohérent : je n'ai que des 0 partout!!!
Merci d'avance.