donpsycho
Cadet 1st Year
- Dabei seit
- Aug. 2006
- Beiträge
- 15
Hi,
ich lese mit DirectX den FrontBuffer aus und speichere die Surface dann im Ramm als BMP.
Vielen Dank für die Antworten.
DonPsycho
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 festplatteLPD3DXBUFFER 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);
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.// 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);
Vielen Dank für die Antworten.
DonPsycho