Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Whoiam en 27 de Diciembre de 2006, 01:11:24 PM

Título: Buffer to Texture D3D9
Publicado por: Whoiam en 27 de Diciembre de 2006, 01:11:24 PM
Hola,

Genero una textura procedural i la guardo en un buffer. Como puedo meterle una cabecera de tipo BMP para poder usar la funcion D3DXCreateTextureFromFileInMemory.

Gracias.
Título: Buffer to Texture D3D9
Publicado por: marc_opolo en 27 de Diciembre de 2006, 04:16:11 PM
Que tal esto:

1. Crear el buffer en memoria con el tamaño de la textura + el header BMP
2. Crear la textura procedural (justo despues de la cabecera)
3. Rellenar la cabecera...
4. Cargar la textura con la API d3dx



Saludos.
Título: Buffer to Texture D3D9
Publicado por: BeRSeRKeR en 27 de Diciembre de 2006, 04:23:06 PM
¿Por qué no utilizas D3DXCreateTexture para crear una textura, la bloqueas y la rellenas con la información del buffer que contiene la textura procedural?.

Saludos.
Título: Buffer to Texture D3D9
Publicado por: fiero en 27 de Diciembre de 2006, 08:22:27 PM
No hace falta crear la cabecera del BMP. Solo tienes que crear tu textura procedural en memoria con una profundidad de 32 bpp y luego copiarla a la textura DX. Algo así:

char *buffer; //Aqui tienes tu textura
D3DLOCKED_RECT lock;
IDirect3DTexture9* m_pTexture;

hRes=pd3dDevice->CreateTexture(tx,ty,1,0,D3DFMT_X8R8G8B8,D3DPOOL_MANAGED,&m_pTexture,NULL);
if(hRes==S_OK)
{
   hRes=m_pTexture->LockRect(0,&lock,NULL,0);
   if(hRes==S_OK)
   {
       memcpy(lock.pBits,buffer,tx*ty*4);
       m_pTexture->UnlockRect(0);
   }
}


un saludo
Título: Buffer to Texture D3D9
Publicado por: Whoiam en 27 de Diciembre de 2006, 08:54:06 PM
Gracias, tema resuelto :D.