Libgdx spritebatch, textureregions és sprite

rendering képek

Nagyon gyakran a textúra térkép készült négyszögletes geometria. Ez is nagyon gyakran sok időt rajz azonos szerkezetű, illetve annak különböző régiókban. Nem lenne hatékony minden alkalommal előre egy téglalapot a grafikus processzor megjelenítésre. Ehelyett egy sor téglalapok egy és ugyanaz a textúra, leírható és elküldi az összes egyszer a grafikus processzor. Ez az, ami történik SpriteBatch osztályban.

Class SpriteBatch biztosít textúra koordinátákat minden téglalapot rajzol. Ő teszi a gyűjtemény geometria átvitele nélkül ez a grafikus processzor. Ha ő kapja meg a textúra eltér az utolsó, aztán összeköti az utolsó textúra, elküldi az összeállított geometriai rajz, és elkezdi gyűjtése egy új textúra geometria.

Minden változik struktúra kialakítása során több téglalapok, így az a tény, hogy számos csoport SpriteBatch geometria. Csak pattintsa a textúra elég drága művelet. Ezen okokból eltárol egy csomó kis kép egy nagy képet, majd festi a régiók egy nagy képet, hogy maximalizálja csoport geometria és megakadályozza a gyakori változása textúra. További információkért lásd TexturePacker.

SpriteBatch

Használata SpriteBatch az alkalmazás az alábbiak szerint:

Minden hívás SpriteBatch rajzot kell tenni a begin () és vége () módszerek. A rajz nem tartozó SpriteBatch nem lehet között kezdődik () és vége () módszerek.

Texture osztály dekódolja a képfájlt, és feltölti a GPU memóriájába. A képfájl kell a könyvtár állományát, az útmutatóban leírt konfiguráció a projekt. képméret kell lennie a kettő hatványa (16x16, 64x256, és így tovább).

Alapítva SpriteBatch textúra át rajzolni. Texture felhívjuk a téglalapot a pozíció 10,10 és a szélessége és magassága különböző dimenzió textúra. SpriteBatch számos módszer teszi textúrák:

Módszerek és leírás

felhívni (Texture textúra, float x, float y)

Döntetlen a textúra a szélessége és magassága a textúra.

felhívni (Texture textúra, float x, float y, int srcX, int srcY, int srcWidth, int srcHeight)

Felhívja része a textúra.

felhívni (Texture textúra, float x, float y, float szélessége, float magasság, int srcX, int srcY, int srcWidth, int srcHeight, logikai flipX, logikai X irányú tükrözés)

Felhívja része a textúra, akkor nyúlik szélessége szélesség és magasság magasság. azzal a lehetőséggel, borulás.

Draw (Texture textúra, float x, float y, float originX, lebegnek originY, úszó szélessége, float magasság, float scaleX, lebegnek scaleY, úszó forgás, int srcX, int srcY, int srcWidth, int srcHeight, logikai flipX, logikai X irányú tükrözés)

Ez a módszer rajzol egy része a textúra, akkor nyúlik szélessége szélesség és magasság magasság. mérlegek és körül forog az eredeti azzal a lehetőséggel, borulás.

felhívni (Texture textúra, float x, float y, float szélessége, float magasság, lebegnek u, float v, float u2, float v2)

Ez a módszer rajzol egy része a textúra, akkor nyúlik szélessége szélesség és magasság magasság. Ez némileg fejlettebb módszer, mert használja a textúra koordinátákat 0-1 helyett koordinátái pixel.

Draw (Texture textúra, float [] spriteVertices, int offset, int hossz)

Ez egy speciális módszer a transzmissziós geometriával textúra koordinátákat és szín információt. Ez a módszer használható lenne bármilyen téglalap, nem csak téglalapok.

TextureRegion

TextureRegion osztály leír egy téglalapot textúra és akkor hasznos, ha a rajz csak egy része a textúra.

Itt, 20, 20, 50, 50 le egy része a textúra, amely fel van húzva, mint érzékelhető 10,10. Ugyanezt lehet elérni továbbítására Texture és egyéb paraméterek SpriteBatch. de TextureRegion teszi kényelmesebbé, amelynek csak egy objektum, amely mindkettő.

SpriteBatch osztály számos módszer kidolgozása textúra régiókban.

Módszerek és leírás

felhívni (TextureRegion régió, float x, float y)

Felhívja a régió a szélessége és magassága a régióban.

felhívni (TextureRegion régió, float x, float y, float szélessége, float magasság)

Rajzol régió nyúlik a szélesség és a magasság.

felhívni (TextureRegion régió, float x, float y, float originX, lebegnek originY, úszó szélessége, float magasság, float scaleX, lebegnek scaleY, úszó forgatás)

Rajzol régió nyúlik a szélesség és a magasság. mérlegek és körül forog az eredeti.

A Sprite osztály régió textúrák és geometria, ahol fel kell hívni, és a színe a rajz.

Itt, 20, 20, 50, 50 leírják egy része a textúra, amely el van forgatva 45 fokkal, és húzódik pozícióban 10,10. Ugyanezt lehet elérni átadó Texture vagy TextureRegion és egyéb paraméterek SpriteBatch. de a Sprite osztály teszi kényelmesebbé, egy objektum, amely az összes. Továbbá, mivel Sprite tartalmaz geometria és konvertálja azt csak szükség esetén, ez valamivel hatékonyabb, ha a skála, forgatás, vagy más tulajdonságok változatlanok maradnak képkockák között.

Vegye figyelembe, hogy Sprite ötvözi tájékoztatás a modell (pozíció, forgatás, és így tovább) tájékoztatást a formában (a textúra felhasználhatja rajz). Ez teszi Sprite irreleváns alkalmazása során a tervezési minták, amelyek szigorúan elválasztja a modellt a nézetet. Ebben az esetben a használata Texture és TextureRegion lehet, hogy több értelme.

alakformálás

Amikor a textúra készült, akkor lehet színezett egy bizonyos színt.

Ez a kód azt mutatja, hogyan kell felhívni a textúra régió és a sprite élénkítő. A szín értékeket ismertetünk a RGBA formátum, melynek értéke 0 és 1 között az alapértelmezett értéket figyelmen kívül hagyja, ha kihúzza a keveredést.

keverés

A keverést alapértelmezés szerint engedélyezve van. Ez azt jelenti, hogy ha a textúra készült, áttetsző részei a textúra együtt a pixelek már található az oldalon a képernyő.

Ha a keverés tiltva, mind a képernyőn, ezen a ponton, cserélje ki a textúra. Ez sokkal hatékonyabb, hogy a keverő ki kell kapcsolni, ha nincs rá szükség. Például, ha a teljes képernyőt rajzolt egy nagy kép a háttér, a teljesítmény érhető letiltásával keverés:

Megjegyzés: Mindig győződjön meg róla, hogy törli a képernyő minden egyes keretben. Ha ez nem történik meg, akkor a textúra az alfa-csatorna, lehet levonni a tetején a százszor, így nyilvánvaló fényelnyelés. Továbbá egyes architektúrák GPU jobban teljesítenek, ha törli a képernyő minden keret, akkor is, ha átlátszatlan képet rajzolt a képernyőn.

teljesítmény tuning

SpriteBatch osztály egy konstruktor, amely meghatározza a maximális számú sprite, hogy lehet helyezni egy puffer előtt a tüske GPU. Ha ez a szám túl alacsony, ez vezet a további fellebbezéseket a GPU. Ha túl nagy, akkor SpriteBatch lesz több memóriát használ, mint amennyi szükséges.

SpriteBatch van egy nyilvános területen nevű maxSpritesInBatch. Ez a mező mutatja a legnagyobb számú sprite, peremes azonnal GPU, SpriteBatch életciklusa során. A telepítés nagyon nagy SpriteBatch méretét, majd ellenőrzi a területen, segíthet meghatározni a legjobb méret SpriteBatch. Meg kell olyan méretű, hogy egyenlő vagy annál valamivel nagyobb maxSpritesInBatch. Ez a mező lehet nullára, vagy vissza bármikor.

SpriteBatch van egy nyilvános területen nevű renderCalls. Hívása után vége () módszer, ez a mező azt jelzi, hogy hányszor egy csoport a geometria, került át a grafikus processzor között az utolsó hívás kezdődik () és vége (). Ez akkor fordul elő, amikor a csatolni kell az egyes textúra, vagy ha SpriteBatch elég cache sprite és válnak teljesen kitöltve. Ennek megfelelően, ha a módosított SpriteBatch renderCalls méretű, és egy nagy értékű (esetleg több, mint 15-20), azt jelzi, hogy a kötés fordul elő több textúrák.

SpriteBatch kiegészítő kivitelező, amely befogadja a méret és a pufferek számát. Ez egy opcionális funkció, amely lehetővé teszi, hogy VBO. helyett a szokásos sor csúcsok. Így van egy lista a pufferek és minden hívás a megjelenítés, az alábbi lista a vágólapra (változó egy kört). Ha az érték a maxSpritesInBatch renderCalls nagy és kicsi, ez adhat egy kis teljesítmény-növekedést.