Hab gerade mal auf meiner Platte gewühlt und die alte Textures.pas gefunden. Der Abschnitt schaut bei mir etwas anders aus:
Delphi-Quellcode:
// ... rest abgeschnitten
begin
try
JPG.LoadFromFile(Filename);
except
MessageBox(0, PChar('
Couldn''
t load JPG - "'+ Filename +'
"'), PChar('
BMP Unit'), MB_OK);
Exit;
end;
end;
// Create Bitmap
BMP:=TBitmap.Create;
BMP.pixelformat:=pf32bit;
BMP.width:=JPG.width;
BMP.height:=JPG.height;
BMP.canvas.draw(0,0,JPG);
// Copy the JPEG onto the Bitmap
// BMP.SaveToFile('D:\test.bmp');
Width :=BMP.Width;
Height :=BMP.Height;
SetLength(Data, Width*Height);
For H:=0
to Height-1
do
Begin
Line :=BMP.scanline[Height-H-1];
// flip JPEG
For W:=0
to Width-1
do
Begin
c:=Line^
and $FFFFFF;
// Need to do a color swap
Data[W+(H*Width)] :=(((c
and $FF)
shl 16)+(c
shr 16)+(c
and $FF00))
or $FF000000;
// 4 channel.
inc(Line);
End;
End;
BMP.free;
JPG.free;
Texture :=CreateTexture(Width, Height, GL_RGBA, addr(Data[0]));
result :=TRUE;
end;
Was aber sicherlich niemals schaden wird ist am Schluss noch ( nach Texture := CreateTexture( ...)
SetLength(Data, 0);
aufzurufen
Der Loader von Sulaco ist zwar schön und gut, doch so ganz neu ist der ja nun auch nicht mehr
. Ich würd dir in der Hinsicht dringend empfehlen, einen anderen Texture-Loaded (z.B.
glBitmap) zu verwenden. Bei glBitmap hast du sogar noch den Vorteil, dass fast nichts umschreiben musst - dort gibt es auch eine Funktion namens LoadTexture, die genauso aufgebaut ist wie die von Jan Horn. Ich persönlich arbeite noch mit Version 1.8.9 dieses Headers, daher weiß ich nicht, was sich seit dem genau verändert hat.
Falls du den Header verwendest, solltest du ihn natürlich vorher einstellen (die Defines am Anfang}