Buduję prosty przykład kółko i krzyżyk z LibGDX. Mam proste obrazy: krzyż, okrąg i planszę, wszystkie png
stworzone za pomocą GIMP-a z przezroczystym tłem.
Jak mogę je renderować jako Texture
przezroczyste?
Próbowałem z funkcją włączania GL10, ale wydaje się, że nie działa.
java
libgdx
lwjgl
transparency
Vokail
źródło
źródło
Odpowiedzi:
SpriteBatch # enableBlending
przed renderowaniem:
źródło
Utwórz Sprite i przypisz do niego Teksturę, a następnie użyj Sprite setColor, aby dostosować jego alfa, tak jak
aw pętli render () użyj SpriteBatch
źródło
Jeśli umieścisz
na początku pętli render () należy odświeżyć ekran kolorem czarnym. Więc jeśli jakiekolwiek obrazy mają przezroczystość, będzie to zauważalne.
więc pętla render () prawdopodobnie wyglądałaby tak
źródło
Próbowałem też renderować plik .png z przezroczystością. Przy podstawowej konfiguracji (mieszanie nie zostało aktywowane) nie renderowało się poprawnie.
Nigdy nie aktywowałem mieszania, ale dodałem to:
Mój problem polegał na tym, że alfa nigdy nie zostało usunięte. Oznacza to, że gdybym renderował z 0.1 alfa, zajęłoby 10 ramek, zanim alfa zostałoby „ułożone” z powrotem do 1. Dodanie powyższego wywołania wyczyściło alfa, tak jak wyczyściłbyś kolor.
Wiem, że to stare pytanie, więc rozwiązania były wtedy inne. enableBlending powinien nadal działać, ale nie jestem pewien, czy to zapobiega „układaniu” alfy. Czyszczenie bitów alfa jest prawdopodobnie najłatwiejszym sposobem, aby zapobiec jednolitemu wyglądowi.
Co do faktycznego renderowania, to jest tak samo jak zawsze.
źródło