- procedure loadtexture(var textur : integer; filename:string);
- var
- bitmap : tbitmap;
- jpg : tjpegimage;
- texdata : array[0..262143] of array[0..2] of shortint;
- r,g,b : byte;
- x,y : integer;
- tempint : integer;
- xwidth, ywidth : integer;
- begin
- bitmap := tbitmap.create;
- if (ExtractFileExt(filename) = '.jpg') or (ExtractFileExt(filename) = '.jpeg') then
- begin
- jpg := tjpegimage.Create;
- jpg.LoadFromFile(filename);
- jpg.CompressionQuality := 100;
- try
- bitmap.assign(jpg);
- finally
- jpg.free;
- end;
- end
- else
- begin
- if ExtractFileExt(filename) = '.bmp' then
- begin
- bitmap.loadfromfile(filename);
- end;
- end;
- xwidth := bitmap.Width;
- ywidth := bitmap.Height;
- for x := 0 to xwidth-1 do
- begin
- for y := 0 to ywidth-1 do
- begin
- tempint := bitmap.canvas.pixels[x,y];
- r := TempInt and $FF;
- g := (TempInt shr 8) and $FF;
- b := (TempInt shr 16) and $FF;
- texdata[((ywidth-1)-y)*xwidth+x, 0] := r;
- texdata[((ywidth-1)-y)*xwidth+x, 1] := g;
- texdata[((ywidth-1)-y)*xwidth+x, 2] := b;
- end;
- end;
- bitmap.free;
- glGenTextures(1, @textur);
- glBindTexture(GL_TEXTURE_2D, textur);
- glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_linear);
- glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_linear);
- glTexImage2D(GL_TEXTURE_2D, 0, 3, xwidth, ywidth, 0, GL_RGB, GL_UNSIGNED_BYTE, @texdata);
- end;