Je ne peux pas comprendre, comment puis-je dire à libgdx de dessiner mes sphères vertes derrière mon décalque transparent.Libgdx culling entre modelinstances décalques
Voici une image par exemple de mon problème:
La création décalcomanie: deux premiers params sont la largeur et la hauteur, le dernier drapeau est wether transparent ou non.
Decal.newDecal(count * (GUTTER + BUTTONWIDTH) + GUTTER, 2 * GUTTER + BUTTONHEIGHT,
new TextureRegion(new Texture(Gdx.files.internal("icons/uibg.png"))), true);
La création de la sphère:
builder.createSphere(
FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2, FINGERTIPRADIUS * 2,
6, 6,
new Material(ColorAttribute.createDiffuse(Color.GREEN)),
VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
Et la méthode render:
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();
}
Je vous remercie tous les conseils.
// EDIT
Ajouté le Blendingattribute aux sphères et un .7 opacitiy. Cela marche. Mais je suppose que le problème est en quelque sorte entre le décalque et le rendu du modèle, parce que la grille en arrière-plan est un décalque et on peut le voir à travers la décalcomanie transparente noire mais les sphères ne peuvent pas.
Le nouveau code de matériel:
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);
Voici une autre image: les deux sphères milieu ne sont pas rendus derrière l'autocollant transparent comme ils le devraient.
Veuillez nous donner un code pour voir ce que vous faites. Nous pouvons juste deviner ici. Par exemple, ajoutez le code de création de l'instance de rendu et du modèle. – BennX
Vous devez ajouter des informations de fusion par exemple 'materials.get (0) .set (new BlendingAttribute (GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA))' – BennX