Lazarus
Programming => Graphics and Multimedia => Graphics => Topic started by: Agent_AL on April 21, 2008, 12:50:04 pm
-
Somehow I cannot get alpha channel working with any material settings. I load png file as texture using ~Material.Texture.Image.LoadFromFile(path).
In result I get png file displayed on surface but as 24 bit texture. Completely transparent areas are white and half transparent are black. Same code and material setup works fine in Delphi and blends png alpha properly. Loading texture in object inspector makes the same result: no alpha.
By the way, I tried to pull the same with 32 bit ico and there were no alpha too. Does GLScene for Lazarus support textures with alpha? TGA from GLScene package doesn't work - I've seen many lines commented out with scanline calls. Tried imagesforlazarus unit but without any progress: TGA read functions return black bitmap.
What should I do?
-
I guess I found it. :shock:
File: GLGraphics.pas in Glscene 1.0.0.2 635:1
pDest^ := $ff{pixel.alpha shr 8}; inc(pDest);
Why alpha data append line is commented out?
I changed it to
pDest^ := pixel.alpha shr 8; inc(pDest);
and tested with 24 and 32 bit raster bitmap files. Png now works fine too.
Srsly, this single line gave me two days of instant hell. :evil:
-
Not sure, but probably because it's in AssignFrom24BitBitmap and the initial porter (don't know who did this part, not me) expected a 24-bit image to not have any alpha channel...
However, as AssignFrom24BitBitmap is used for bitmaps of all pixelformats in lazarus, it should offcourse respect the alpha .. I fixed that in svn rev. 2275.
Btw. bug reports and patches are best placed in mantis ( http://bugs.freepascal.org Project "Packages" Category "glscene" )