- procedure TForm1.CTexturenChange(Sender: TObject);
- var
- ImageDataS, ImageDataT, Rs, Gs, Bs, Rt, Gt, Bt : PGluByte;
- Height, Width, Heights, Widths, X, RowS, A, B : Integer;
- begin
- TexMgr.BindTexture(CTexturen.Text);
- glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, @widths);
- glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, @heights);
- ImageDataS := AllocMem(Heights*Widths*3);
- glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_UNSIGNED_BYTE, ImageDataS);
- TexMgr.BindTexture('MapLayer');
- glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, @width);
- glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, @height);
- ImageDataT := AllocMem(Height*Width*3+3);
- glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_UNSIGNED_BYTE, ImageDataT);
- RowS := 0; A := 0; B := 0;
- for X := 0 to (Width*Height)-1 do begin
- Rs := Pointer(integer(ImageDataS) + ((WidthS * RowS) + A)*3);
- Gs := Pointer(integer(ImageDataS) + ((WidthS * RowS) + A)*3+1);
- Bs := Pointer(integer(ImageDataS) + ((WidthS * RowS) + A)*3+2);
- Rt := Pointer(integer(ImageDataT) + (X)*3);
- Gt := Pointer(integer(ImageDataT) + (X)*3+1);
- Bt := Pointer(integer(ImageDataT) + (X)*3+2);
- Writeln('Punkt : ' + floattostr(((WidthS * RowS) + A)*3));
- Writeln('Punkt : ' + floattostr(((WidthS * RowS) + A)*3+1));
- Writeln('Punkt : ' + floattostr(((WidthS * RowS) + A)*3+2));
- if not (Rt=nil) or (Gt=nil) or (Bt=nil) or
- (Rs=nil) or (Gs=nil) or (Bs=nil) then begin
- Rt^ := Rs^;
- Gt^ := Gs^;
- Bt^ := Bs^;
- end;
- inc(A);
- inc(B);
- if B > Width then begin
- inc(RowS);
- A := 0;
- end;
- if A > WidthS then begin
- A := 0;
- end;
- if RowS > HeightS then RowS := 0;
- end;
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, Width, Height, 0, GL_RGB, GL_UNSIGNED_BYTE, ImageDataT);
- glBindTexture(GL_TEXTURE_2D, 0);
- FreeMem(ImageDataT);
- FreeMem(ImageDataS);
- end;