1
我弄不明白,我如何告訴libgdx在透明貼花背後繪製我的綠色球體。Libgdx在模型物品貼花之間剔除
這是我的問題的示例圖片:
貼花創建:第一兩個參數是寬度和高度,最後標誌爲閹羊透明與否。
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);
這裏的另一個畫面:兩個球體中期並不透明貼圖渲染背後,他們應該。
請給我們一些代碼,看看你在做什麼。我們可以在這裏猜到。例如添加渲染和模型實例創建代碼。 – BennX
您需要添加混合信息,例如'materials.get(0).set(new BlendingAttribute(GL20.GL_SRC_ALPHA,GL20.GL_ONE_MINUS_SRC_ALPHA));' – BennX