Получить ошибку SIGSEGV при добавлении PNGImage в TGLCompositeImage
Я использую Lazarus 1.2.4 и GLSCENE SVN 6462 (версия 1.2 SVN)
Я добавляю материал с этой функцией ниже
function AddMaterial(aMatLib: TGlMaterialLibrary; aFileName, aMaterialName: string): TGlLibMaterial; overload;
begin
result := aMatLib.Materials.Add;
with result do
begin
with Material do
begin
if aFileName= 'Fast_Blur' then
begin
MaterialOptions:= [moNoLighting];
Texture.Disabled:= true;
Texture.TextureMode:= tmDecal;
BlendingMode:= bmModulate;
end
else
begin
MaterialOptions := [moIgnoreFog, moNoLighting];
Texture.Disabled := false;
Texture.TextureMode:= tmModulate;
BlendingMode := bmTransparency;
end;
with FrontProperties do
begin
Ambient.SetColor(1, 1, 1, 1);
if aFileName= 'Fast_Blur' then
Diffuse.SetColor(204,204,204,1)
else
Diffuse.SetColor(1, 1, 1, 1);
Emission.SetColor(1, 1, 1, 1);
Specular.SetColor(1, 1, 1, 1);
end;
Texture.ImageClassName:= 'TGLCompositeImage';
if aFileName<> 'Fast_Blur' then
begin
if ExtractFileExt(aFileName) = '.bmp' then
TGLCompositeImage(Texture.Image).LoadFromFile(aFileName)
else if ExtractFileExt(aFileName) = '.tga' then
begin
TGLCompositeImage(Texture.Image).LoadFromFile(aFileName);
end
else if ExtractFileExt(aFileName) = '' then
TGLCompositeImage(Texture.Image).LoadFromFile(aFileName + '.png');
end;
end;
Name := aMaterialName;
end;
end;
Когда я запускаю его, я получаю ошибку ниже
Project One raised exception class "External : SIGSEGV"
Попробуйте покопаться и найдите, что когда pngimage попытается загрузить из потока строку
177
CODE
if _png_sig_cmp(@sig, 0, 8) <> 0 then
И прежде чем выполнить повышение EInvalidRasterFile.Create('Invalid PNG file');
получить SIGSEGV..
Так что любой может помочь...
Ps... если я изменяю изображение TGLComposite с TGLPictureImage, то работает отлично, но у меня нет прозрачности изображений..
PS2... После еще копания я обнаружил, что все ошибки происходят от внешней LIBPNG, поэтому не работают хорошо вместе GLPNGFILE и LIBPNG
1 ответ
Мои настройки для *.png текстур:
Имя класса: TGLCompositeImage
альфа: tiaDefault
режим текстуры: tmAdd