2013-12-17 38 views
0

我試圖表現出一些奇怪的方式在TGLHudSprite圖像不顯示...第二材料在glhudsprite

這裏是我的嘗試..

我有一個材料庫和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'; 

一切正常,現在...

我想做的事情是freeandn IL我的素材庫中再次重現,加上不同的材料具有相同名稱的「知情同意」,並顯示在我的hudsprite ...

,所以我讓這個....

FreeAndNil(myMatlib); 
AddMaterial(myMatlib,'c:\spic.png','pic'); 
mySprite.material.libmaterialname:= 'pic'; 

有了這個,我得到沒有什麼,但只有一個黑色的圖片...

我做錯了什麼...?

順便說一句材料裝入correcty BCS在第二雪碧我創建並沒有設置任何其他材料則顯示「PIC」正確...

回答

2

也許你需要再次做到這一點: mySprite.Material.MaterialLibrary: = myMatlib; mySprite.Material.LibMaterialName:='myMaterialName';

+0

謝謝你工作得很好... – azrael11