donpsycho
Cadet 2nd Year
- Registriert
- Aug. 2006
- Beiträge
- 17
Hi,
ich lese mit DirectX den FrontBuffer aus und speichere die Surface dann im Ramm als BMP.
nun bin ich mir aber nicht sicher wie genau ich nun auf die BMP im Ramm zugreife... kann ich dies genau so tun wie auf der festplatte
Dies schreibt mir ja die BMP in den RAM aber halt als RGBTRIPLE * und auf den LPD3DXBUFFER muss ich sicher anders zugreifen nur finde ich nirgens wie.
Vielen Dank für die Antworten.
DonPsycho
ich lese mit DirectX den FrontBuffer aus und speichere die Surface dann im Ramm als BMP.
LPD3DXBUFFER pBuffer = NULL;
g_pd3dDevice->CreateOffscreenPlainSurface(1920, 1080, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &g_pSurface, NULL);
g_pd3dDevice->GetFrontBufferData(0, g_pSurface);
D3DXSaveSurfaceToFileInMemory(&pBuffer, D3DXIFF_BMP, g_pSurface, NULL,NULL);
nun bin ich mir aber nicht sicher wie genau ich nun auf die BMP im Ramm zugreife... kann ich dies genau so tun wie auf der festplatte
// Variablen
HANDLE hfile;
DWORD written;
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
RGBTRIPLE *image;
LONG imagesize;
//Einlesen
// Open the file
hfile = CreateFile(L"D:\Screenshot.bmp",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
// Read the header
ReadFile(hfile,&bfh,sizeof(bfh),&written,NULL);
ReadFile(hfile,&bih,sizeof(bih),&written,NULL);
// Read image
imagesize = bih.biWidth*bih.biHeight; // Helps you allocate memory for the image
image = new RGBTRIPLE[imagesize]; // Create a new image (I'm creating an array during runtime)
ReadFile(hfile,image,imagesize*sizeof(RGBTRIPLE),&written,NULL); // Reads it off the disk
// Close source file
CloseHandle(hfile);
Dies schreibt mir ja die BMP in den RAM aber halt als RGBTRIPLE * und auf den LPD3DXBUFFER muss ich sicher anders zugreifen nur finde ich nirgens wie.
Vielen Dank für die Antworten.
DonPsycho