hedgewars/uLand.pas
changeset 768 2886dafa5bcf
parent 767 697728ffe39f
child 769 788efc1d649f
equal deleted inserted replaced
767:697728ffe39f 768:2886dafa5bcf
    23 type TLandArray = packed array[0..1023, 0..2047] of LongWord;
    23 type TLandArray = packed array[0..1023, 0..2047] of LongWord;
    24      TPreview = packed array[0..127, 0..31] of byte;
    24      TPreview = packed array[0..127, 0..31] of byte;
    25 
    25 
    26 var  Land: TLandArray;
    26 var  Land: TLandArray;
    27      LandSurface: PSDL_Surface;
    27      LandSurface: PSDL_Surface;
       
    28      LandPixels: TLandArray;
    28      LandTexture: PTexture = nil;
    29      LandTexture: PTexture = nil;
    29 
    30 
    30 procedure GenMap;
    31 procedure GenMap;
    31 function  GenPreview: TPreview;
    32 function  GenPreview: TPreview;
    32 procedure CheckLandDigest(s: shortstring);
    33 procedure CheckLandDigest(s: shortstring);
   628         end;
   629         end;
   629 GenPreview:= Preview
   630 GenPreview:= Preview
   630 end;
   631 end;
   631 
   632 
   632 procedure UpdateLandTexture(Y, Height: LongInt);
   633 procedure UpdateLandTexture(Y, Height: LongInt);
   633 var p: pointer;
   634 var i: integer;
   634 begin
   635 begin
   635 if LandTexture <> nil then
   636 if LandTexture <> nil then
   636    begin
   637    begin
       
   638    glBindTexture(GL_TEXTURE_2D, LandTexture^.id);
       
   639 
       
   640    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, Y, 2048, Height, GL_RGBA, GL_UNSIGNED_BYTE, @LandPixels[Y, 0]);
       
   641    end else
       
   642    begin
       
   643    LandTexture:= Surface2Tex(LandSurface);
       
   644 
   637    if SDL_MustLock(LandSurface) then
   645    if SDL_MustLock(LandSurface) then
   638       SDLTry(SDL_LockSurface(LandSurface) >= 0, true);
   646       SDLTry(SDL_LockSurface(LandSurface) >= 0, true);
   639 
   647 
   640    glBindTexture(GL_TEXTURE_2D, LandTexture^.id);
   648    Move(LandSurface^.pixels^, LandPixels, 2048 * 1024 * 4);
   641 
       
   642    p:= @PByteArray(LandSurface^.pixels)^[LandSurface^.pitch * Y];
       
   643    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, Y, 2048, Height, GL_RGBA, GL_UNSIGNED_BYTE, p);
       
   644 
   649 
   645    if SDL_MustLock(LandSurface) then
   650    if SDL_MustLock(LandSurface) then
   646       SDL_UnlockSurface(LandSurface);
   651       SDL_UnlockSurface(LandSurface)
   647    end else
   652    end;
   648    LandTexture:= Surface2Tex(LandSurface)
   653 
   649 end;
   654 end;
   650 
   655 
   651 initialization
   656 initialization
   652 
   657 
   653 end.
   658 end.