我尝试以奇怪的方式在TGLHudSprite中显示图像......
这是我的尝试..
我有一个材料库和一个hudsprite ......
myMatlib: TGLMaterialLibrary
mySprite: TGLHudSprite
接下来我创建这个对象......
myMatlib:= TGLMaterialLibrary.Create(self);
mySprite:= TGLHudSprite.CreateAsChild(MainScene.Background);
mySprite.Material.MaterialLibrary:= myMatlib;
mySprite.Material.LibMaterialName:= '';
mySprite.position.x:= 512;
mySprite.position.y:= 384;
mySprite.visible:= true;
运行它,逻辑mySprite什么也没显示...... 现在我添加一个材料......用这个函数..
function AddMaterial(aMatLib: TGlMaterialLibrary; aFileName, aMaterialName: string): TGlLibMaterial;
begin
result := aMatLib.Materials.Add;
with result do
begin
with Material do
begin
MaterialOptions := [moIgnoreFog, moNoLighting];
Texture.Disabled := false;
Texture.TextureMode := tmModulate;
BlendingMode := bmTransparency;
with FrontProperties do
begin
Ambient.SetColor(1, 1, 1, 1);
Diffuse.SetColor(1, 1, 1, 1);
Emission.SetColor(1, 1, 1, 1);
Specular.SetColor(1, 1, 1, 1);
end;
Texture.ImageClassName := 'TGLCompositeImage';
if ExtractFileExt(aFileName) = '' then
TGLCompositeImage(Texture.Image).LoadFromFile(aFileName + '.png')
else
TGLCompositeImage(Texture.Image).LoadFromFile(aFileName);
end;
Name := aMaterialName;
end;
end;
所以我添加一个材料......
AddMaterial(myMatlib,'c:\pic.png','pic');
然后我在我的hudSprite中设置材料......
mySprite.material.libmaterialname:= 'pic';
现在一切正常......
我想做的事情是再次重新创建我的材料库,添加一个名为'pic'的不同材料并在我的hudsprite中显示...
所以我做到了....
FreeAndNil(myMatlib);
AddMaterial(myMatlib,'c:\spic.png','pic');
mySprite.material.libmaterialname:= 'pic';
有了这个,我只得到一张黑色照片......
我做错了什么......?
在我创建的第二个精灵中加载了正确的bcs材料,而没有设置任何其他材料正确显示“pic”......
答案 0 :(得分:2)
也许你需要再次这样做: mySprite.Material.MaterialLibrary:= myMatlib; mySprite.Material.LibMaterialName:='myMaterialName';