2015-08-29 21 views
1

我弄不明白,我如何告訴libgdx在透明貼花背後繪製我的綠色球體。Libgdx在模型物品貼花之間剔除

這是我的問題的示例圖片:

enter image description here

貼花創建:第一兩個參數是寬度和高度,最後標誌爲閹羊透明與否。

Decal.newDecal(count * (GUTTER + BUTTONWIDTH) + GUTTER, 2 * GUTTER + BUTTONHEIGHT, 
      new TextureRegion(new Texture(Gdx.files.internal("icons/uibg.png"))), true); 

球體創造:

builder.createSphere(
      FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2, 
      6, 6, 
      new Material(ColorAttribute.createDiffuse(Color.GREEN)), 
      VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal); 

而且渲染方法:

this.models = new ModelBatch(); 
this.decals = new DecalBatch(new CameraGroupStrategy(camera)); 
... 
// adding decals and models to render queue 
... 

public void update(float deltaTime){ 
    super.update(deltaTime); 

    Gdx.gl.glClearColor(0, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 

    models.begin(camera); 
    for (Entity entity : queue) { 
     ModelInstance model = Mappers.Object.get(entity).instance; 
     models.render(model, environment); 
    } 

    decals.flush(); 

    models.end(); 
    queue.clear(); 
} 

我欣賞每一個建議。

//編輯

添加了Blendingattribute到球體和0.7 opacitiy。這工作。但我想這個問題在貼圖和模型渲染之間有點不同,因爲背景中的網格是貼花,可以通過黑色透明貼花看到,但是球體不能。

新材料代碼:

Material mat = new Material(); 
    mat.set(ColorAttribute.createDiffuse(Color.GREEN)); 
    mat.set(new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA, 0.7f)); 
    fingerTip = builder.createSphere(
      FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2, 
      6, 6, 
      mat, 
      VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal); 

這裏的另一個畫面:兩個球體中期並不透明貼圖渲染背後,他們應該。

enter image description here

+0

請給我們一些代碼,看看你在做什麼。我們可以在這裏猜到。例如添加渲染和模型實例創建代碼。 – BennX

+0

您需要添加混合信息,例如'materials.get(0).set(new BlendingAttribute(GL20.GL_SRC_ALPHA,GL20.GL_ONE_MINUS_SRC_ALPHA));' – BennX

回答

0

decals.flush()之前調用models.end()。透明的東西必須在不透明的東西后繪製。現在你正在繪製貼花,所以它在繪製球體之前將其深度寫入緩衝區。

如果你的模型也是透明的,這會變得更加複雜。您需要以某種方式將模型與模型進行分類,然後在沖洗貼花之前沖洗後部模型,最後沖洗附近的模型。