[DirectX] Screenshots speichern
-
Hi Leute,
ich habe mir eine kleine Methode geschrieben, die es mir ermöglicht Screenshots zu speichern. Doch leider kann ich immer nur eins speichern, da wenn ich wieder auf F12 drücke, dann wird das alte überschrieben. Wie kann ich es beispielsweise erreichen, dass das erste Screenshot "Shot1.bmp" heißt, das zweite "Shot2.bmp" usw.? Wie würdet ihr vorgehen? Wäre euch sehr dankbar, wenn ihr mir einen Lösungsvorschlag geben könntet. Danke schonmal...
MfG Apo
-
Teste einfach vorher, ob es die Datei schon gibt, und wenn ja, dann zählst du die Nummer eins hoch.
-
Du nimmst einfach den Namen des Screenshots und hängst eine Zahl dahinter...beim ersten 0 oder nichts und dann inkrementierst du pro aufruf einfach den counter...
(Du kannst auch testen ob die Datei schon existiert...)
Hab das auch mal implementiert:void CDirect3D::CreateScreenshot(char* Filename ) { char File[1024],testfile[1024]; strcpy(File,Filename); if(created_screenshots==0) sprintf(testfile,"%s.bmp",File); else sprintf(testfile,"%s%d.bmp",File,created_screenshots); created_screenshots++; strcpy(File,testfile); RECT r1={0,0,162,159}; LPDIRECT3DSURFACE9 lpSurface; m_lpD3DDevice->CreateOffscreenPlainSurface( Resolution_X,Resolution_Y, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &lpSurface,0); m_lpD3DDevice->GetFrontBufferData(0,lpSurface); D3DXSaveSurfaceToFile(File,D3DXIFF_BMP, lpSurface,0,&r1); lpSurface->Release(); }Edit: Too slow
-
wobei du jeweils nen TCHAR, nen _sntprintf nutzen solltest ... und strcpy durch _sntprintf ersetzen --- damit verhinderst du evt. fehler die sonnst im nachhinein auftreten können...
-
wobei du jeweils nen TCHAR, nen _sntprintf nutzen solltest ... und strcpy durch _sntprintf ersetzen -
kurz gefragt .... warum?