Libgdx shaderek

Ha azt szeretnénk, hogy működjön együtt az OpenGL ES 2.0, akkor tudnia kell néhány alapvető shaderek. Libgdx alapkiépítésben egy shader hogy vigyázni néhány dolgot a vizualizáció SpriteBatch. Azonban, ha azt szeretnénk, hogy szemléltesse a háló (mesh) OpenGL ES 2.0, akkor meg kell adnia a helyes shader. Alapvetően az egész megjelenítés OpenGL ES 2.0 történik shaderek. Ezért hívják a programozható gázvezeték. Az ötlet a beavatkozás területén shader, visszatarthat néhány ember használja ES 2.0, de megéri az olvasni róluk, shaderek lehetővé tesznek egy hihetetlenül szép dolgokat. Alapjainak ismerete valójában nagyon egyszerű.

Mik shaderek

vertex shaderek

Ahogy a neve is sugallja, a vertex gumicsizma felelős a műveletek csúcsot. Pontosabban az egyes program végrehajtásához érvényes pontosan egy csúcs. Ez egy fontos fogalom, hogy megértsék. Minden, amit csinál a vertex shader, csak pontosan egy csúcs.

Itt egy egyszerű példa a vertex shader:

Most minden jól néz ki, nem? Először is kell egy attribútum felsők a_position. Ez az attribútum vec4. azt jelenti, hogy a vektor a 4 mérés. Ez a példa, információkat nyújt a legjobb pozíciót.

Ezután meg kell u_projectionViewMatrix. Ez a mátrix 4x4, amely tartalmazza az konvertáló vetítési és fajok. Ha ezek a feltételek nem világos, hogy ha, ajánlott elolvasni fel a hosszú távú és izometrikus nézetben.

Bent a fő módszer végzünk műveleteket a tetején. Ebben az esetben az összes, hogy egy shader, megsokszorozza a vertex pozícióját a mátrixban, és hozzárendeli gl_Position eredményt. gl_Position ezt a kulcsszót OpenGL előre, és nem lehet használni mást, mint továbbítja a feldolgozott csúcs.

fragment shaderek

Töredék shader funkciói nagyon hasonlóak a vertex shader, de ahelyett, hogy vertex feldolgozó, feldolgozza minden rész egyszerre. Az egyszerűség kedvéért, tekintsünk egy fragmens, mint egy pixel. Most már értem, hogy ez egy igen jelentős különbség.

Tételezzük fel, hogy a háromszög területe 300 pixel. Vertex shader erre háromszög lesz végrehajtva 3-szor. Töredék shader végrehajtásra kerül 300 alkalommal. Tehát ezt tartsd szem előtt, amikor írásban shaderek. Minden, ami történik a fragment shader, akkor exponenciálisan drágább.

Itt van egy nagyon egyszerű fragment shader:

Ez a fragmentum shader lesz csak felhívni minden darab tömör vörös. gl_FragColor egy másik előre meghatározott kulcsszó. Arra használják, hogy kiírja a végleges színét a töredék. Figyeljük meg, hogy az általunk használt vec4 (x, y, z, w). hogy meghatározzák a vektor a shader. Ebben az esetben a vektor meghatározására használt szín a töredék.

ShaderProgram

Most van egy közös megegyezés, ami a shader, és hogyan működik. Hozzunk létre azt libgdx. Ezt használja ShaderProgram osztályban. ShaderProgram áll vertex és fragment shaderek. Tudod, hogy a letöltés egy fájl vagy csak át a húr, és tartalmaznia kell a shader kódot belül a java fájlokat.

Itt shader beállítás, amellyel dolgozunk:

Ez egy elég szabványos beállítás a shader, amely a pozíció tulajdonság, színes attribútum és attribútum a textúra koordinátákat. Megjegyzés az első két változás történt a shader. Feltéve, hogy a eredménye, hogy átadjuk a fragment shader.

A fragment shader van sampler2D. egy speciális formája használatos textúra. Mint látható, a fő funkciója, megszorozzuk a vertex színe megtalálható egy színt a textúra, hogy a végső színes nyomatokat.

Létrehozásához ShaderProgram teszünk a következő:

Mi lehet benne, hogy a shader összeállított helyesen használja shader.isCompiled (). Bejelentkezés fordítási művelet származtatható a shader.getLog ().

Mi is létrehozhatunk a megfelelő poligon háló, és betölti a textúra:

A képalkotó módszer, egyszerűen hívja shader.begin (), és adja át az Egységes változókat, majd végezze el a rács vizualizációs shader.

A jó dolog shader OpenGL ES 2.0, hogy van egy hatalmas könyvtár shaderek elérhető. Szinte minden, ami történik a WebGL könnyen át a mobil eszközökre.

Kapcsolódó cikkek