Po pierwsze, Texture vs TextureRegion: Kiedy robisz coś takiego jak Texture t = nowa tekstura (ścieżka), ładujesz to do GPU. Ponadto powinieneś załadować moc 2 tekstur. Możesz pracować z innymi rozdzielczościach (Texture.setEnforcePotImages = false), ale zaleca się stosowanie pow 2.
Teraz TextureRegion pobiera „kawałek” z tekstury, bez względu na jej wymiar. Zaletą posiadania jednej tekstury i wielu teksturRegionu tej tekstury jest to, że NIE ładujesz każdego regionu do GPU.
Jak możesz sobie wyobrazić, jeśli chcesz rysować za pomocą SpriteBatch, o wiele bardziej wydajne jest użycie TextureRegion zamiast wielu tekstur, przepraszam, że mój angielski nie jest wystarczająco dobry. Oto dobre wytłumaczenie: Tekstury TextureRegion i SpriteBatch
Teraz chcesz użyć TextureRegion i jednego obrazu o mocy 2 rozdzielczości ze wszystkimi arkuszami sprite i obrazami. Czy musisz utworzyć TextureRegions ze wszystkimi współrzędnymi i wymiarami? Czy potrzebujesz otworzyć farbę, aby policzyć piksele? Nie, nie masz. Możesz użyć czegoś takiego jak TexturePacker . Spakuje każdą teksturę do jednego obrazu ORAZ utworzy plik .pack zawierający wymiary i współrzędne wszystkich z nich.
Wynik będzie mniej więcej taki:
Zamiast tworzenia tekstury utwórz obiekt TextureAtlas w następujący sposób:
Teraz utworzenie TextRegions byłoby tak proste, jak:
(Pamiętaj, że nazwa regionu to nazwa oryginalnego obrazu bez rozszerzenia).
Sprite przechowuje informacje o geometrii, kolorze i teksturze do rysowania duszków 2D za pomocą Batch. Oznacza to, że możesz je łatwo obracać i przenosić. Stworzyłem własną klasę Entity i nie potrzebuję klasy Sprite. Prawdopodobnie zrobiłbyś to samo. Nie uważam tej klasy za bardzo przydatną.
Klasa obrazu dziedziczy od aktora. Oznacza to, że możesz dodać go do sceny. Jest to część pakietu Scene2D. Jeśli jesteś nowy w libgdx i nie wiesz o tym pakiecie, to wystarczająca ilość informacji o tej klasie. To naprawdę interesujący temat, ale nie ma odpowiedzi na to pytanie.
Mam nadzieję, że to pomoże :)
TextureRegion
s może odnosić się do różnych (lub nakładających się) części tekstury, aTexture
zawsze odnosi się do całego obrazu. Ponieważ zmiana tekstur jest droga, jest to dobre. Twój opis sprawia, że brzmi to jak rozproszoneTextureRegion
tekstury (a la.GL_ARB_sparse_texture
), Ale libGDX i większość sprzętu, na którym działa, nie obsługuje tego rozszerzenia.