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. |