diff -r 713d9eff2ce3 hedgewars/uMisc.pas --- a/hedgewars/uMisc.pas Sat Dec 08 15:38:16 2012 +0100 +++ b/hedgewars/uMisc.pas Sat May 11 22:59:45 2013 -0400 @@ -227,6 +227,7 @@ image: PScreenshot; format: GLenum; ext: string[4]; + x,y: LongWord; begin {$IFDEF PNG_SCREENSHOTS} format:= GL_RGBA; @@ -236,7 +237,7 @@ ext:= '.bmp'; {$ENDIF} -size:= toPowerOf2(cScreenWidth) * toPowerOf2(cScreenHeight) * 4; +size:= LAND_WIDTH*LAND_HEIGHT*4; p:= GetMem(size); // will be freed in SaveScreenshot() // memory could not be allocated @@ -248,17 +249,31 @@ end; // read pixels from the front buffer -glReadPixels(0, 0, cScreenWidth, cScreenHeight, format, GL_UNSIGNED_BYTE, p); +//glReadPixels(0, 0, cScreenWidth, cScreenHeight, format, GL_UNSIGNED_BYTE, p); + +for y:= 0 to LAND_HEIGHT-1 do + for x:= 0 to LAND_WIDTH-1 do + begin + PLongWordArray(p)^[y*LAND_WIDTH+x]:= LandPixels[LAND_HEIGHT-1-y, x]; +(* + if Land[LAND_HEIGHT-1-y, x] and lfBasic = lfBasic then + PLongWordArray(p)^[y*LAND_WIDTH+x]:= AMask + else if Land[LAND_HEIGHT-1-y, x] and lfObject = lfObject then + PLongWordArray(p)^[y*LAND_WIDTH+x]:= $FFFFFFFF + else + PLongWordArray(p)^[y*LAND_WIDTH+x]:= 0; +//*) + end; {$IFDEF USE_VIDEO_RECORDING} -ReduceImage(p, cScreenWidth, cScreenHeight, k); +//ReduceImage(p, cScreenWidth, cScreenHeight, k); {$ENDIF} // allocate and fill structure that will be passed to new thread New(image); // will be disposed in SaveScreenshot() image^.filename:= UserPathPrefix + filename + ext; -image^.width:= cScreenWidth div k; -image^.height:= cScreenHeight div k; +image^.width:= LAND_WIDTH; +image^.height:= LAND_HEIGHT; image^.size:= size; image^.buffer:= p;