salut,
j'ai un pb pour créer une texture en direct3d8 à partir d'un buffer de pixels rgba
J'y parviens à partir d'un fichier bitmap avec la fonction :
D3DXCreateTextureFromFile( m_pd3dDevice, "Banana.bmp",&m_pTexture ) ) )
j'ai donc tranformé mon buffer de pixels rgba en bitmap comme ça :
HBITMAP hbitmap=CreateBitmap(
pBackBuffer->GetWidth(), // bitmap width, in pixels
pBackBuffer->GetHeight(), // bitmap height, in pixels
1, // number of color planes used by device
32, // number of bits required to identify a color
pBackBuffer->GetDataBuf() // pointer to array containing color data
);
pBackBuffer->GetDataBuf() est le pointeur vers mon tableau de pixel.
J'ai donc accés à un HBITMAP ou un CBitmap avec cette fonction et je sais que cela fonctionne car j'ai reussi a afficher le bitmap dans un picture box.
Maintenant mon problème est de créer une texture avec ce bitmap en mémoire (car je vois encore moins comment faire directement à partir de mon tableau de pixel).
J'ai à ma disposition plusieurs fonctions de direct3d et je pensais utiliser celle là :
HRESULT D3DXCreateTextureFromFileInMemory(
LPDIRECT3DDEVICE8 pDevice,
LPCVOID pSrcData,
UINT SrcData,
LPDIRECT3DTEXTURE8* ppTexture
);
pour pDevice et ppTexture c'est bon. Mais il disent dans la msdn que pSrcData est un pointeur vers un fichier en mémoire, que ça peut être un bitmap mais aussi que l'image doit être stocker en mèmoire sous la forme RT_RCDATA. Et la je bloque depuis un moment.
ils disent ceci :
Remarks
This function supports the following file formats: .bmp, .dds, .dib, .jpg, .png, and .tga.
Note that a resource created with this function will be placed in the memory class denoted by D3DPOOL_MANAGED.
This method is designed to be used for loading image files stored as RT_RCDATA, which is an application-defined resource (raw data). Otherwise this method will fail.
J'ai l'impression qu'il faut que je convertisse mon bitmap sous cette forme de donnée mais je ne vois pas du tout comment.
merci d'avance pour votre aide