Delphi 第二种材质未显示在精灵中

Delphi 第二种材质未显示在精灵中,delphi,opengl,delphi-7,glscene,Delphi,Opengl,Delphi 7,Glscene,我试图以某种奇怪的方式在TGLHudSprite中显示图像 这是我的尝试 我有一个材料库和一个小精灵 myMatlib: TGLMaterialLibrary mySprite: TGLHudSprite 接下来我创建这个对象 myMatlib:= TGLMaterialLibrary.Create(self); mySprite:= TGLHudSprite.CreateAsChild(MainScene.Background); mySprite.Material.MaterialLibr

我试图以某种奇怪的方式在TGLHudSprite中显示图像

这是我的尝试

我有一个材料库和一个小精灵

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');
然后我把材料放在我的小精灵里

mySprite.material.libmaterialname:= 'pic';
现在一切正常

我想做的事情是释放并取消重新创建的材质库,添加具有相同名称“pic”的不同材质,并在我的hudsprite中显示它

myMatlib: TGLMaterialLibrary
mySprite: TGLHudSprite
所以我做了这个

 FreeAndNil(myMatlib);
 AddMaterial(myMatlib,'c:\spic.png','pic');
 mySprite.material.libmaterialname:= 'pic';
有了这个,我什么也得不到,只有一张黑色的照片

我做错了什么


顺便说一句,在我创建的第二个精灵中正确加载了材质bcs,并且没有设置任何其他材质,它正确显示了“pic”…

也许您需要再次执行此操作: mySprite.Material.MaterialLibrary:=myMatlib; mySprite.Material.LibMaterialName:=“myMaterialName”