Az openGL shaderek

Blogolás Tartalom: Flashhell Ez a kiadvány került át egy személyes blog felhasználói általános szakaszok urovok oldalon.

OpenGL shaderek. Egyszerű GLSL shader

Arról van szó, GLSL shaderek, de nem az egyetlen GLSL shader nyelv, amely képes együttműködni az OpenGL. A OpenGL is használhatók a shaderek Cg (C Graphics).

Megjegyzés: további könyvtár Cg (nVidia) szükséges azok használatát.

GLSL (OpenGL Shading Language) - a magas szintű nyelvi programozási shaderek. A szintaxis alapul nyelv ANSI C programozási azonban, mert a sajátos orientációja neki sok a funkciók már megszűnt. Ez azért történt, hogy egyszerűsítse a nyelv és a teljesítmény javítása érdekében. A nyelv olyan további funkciókat és adattípusok, például dolgozni vektorok és mátrixok. GLSL teljesen részévé vált az OpenGL 2.0.

típusú shaderek
  1. Vertex shader - részben helyettesíti a grafikus csővezeték, végzi el az átalakítást kapcsolódó vertex adatokat. Mint például a szorzás a csúcsok és merőlegesek a vetítési mátrix és szimuláció, amelyben a vertex színeket, a világító anyagok. Ő dolgozik a renderelt minden csúcsa. Kötelező munka a vertex shader, hogy rögzíti a helyzet a felső, a beépített változó gl_Position.
  2. Geometry shader - shader, amely képes kezelni a nem csak a felsőt, hanem egy egész szervezet. Ő sem csepp (a kezelésben) primitívek, vagy újakat hoz létre, azaz egy geometriai shader képes generálni primitívek. És azt is tudja változtatni a típusú bemenet primitívek (geometriai shader teljesen be az OpenGL 3.2).
  3. Töredék shader - részben helyettesíti koveyera grafika (CG) feldolgozás minden kapott a korábbi szakaszokban a Ptk részlet (nem pixel). A feldolgozás során a következő lépéseket tartalmazhatja adatokat fogad a textúra rendering világítás, rendering keverés. Kötelező művelet fragment shader a szín rekord beépített változó fragmentum gl_FragColor vagy eldobása különleges megválni parancsot. Abban az esetben elutasította a töredék, minden további kifizetés nélkül nem lesz vele készült, és a töredék nem esnek bele a frame buffer.
Megjegyzés: Szintén OpenGL, kétféle tesselyatsionnyh shader, azok rendelkezésre állnak az OpenGL 4.0 és újabb.

Letöltése és fordítása

GLSL -sheydery úgy határozott, hogy a forma forráskód (bár OpenGL 4.1, és a lehetőséget, hogy töltse be shader formájában bináris adatok). Ezt a módszert használták jobb toleranciát shaderek különböző hardver és szoftver platformok. A forráskódok által összeállított vezető. Ők lehet összeállítani csak létrehozása után a jelenlegi helyzetben az OpenGL. Pilóta létrehozza önmagát belül optimális bináris kód, amely megérti a berendezés. Ez biztosítja, hogy ugyanaz a shader lesz megfelelően és hatékonyan működtetett több platformon.


A forráskód úgy reprezentálható, mint ANSI Többsoros, megszüntető szállítóvezeték ( „\ n”), vagy anélkül. Abban az esetben, ha az átvitel nem kell átadni egy sor hosszúságú minden sorban.

töltse le és fordítsd lépéseket:
  • Először azonosítókat felosztani GLuint. alatt shader - glCreateShader. és a shader programot - glCreateProgram.
  • A shader forráskód azonosítója van betöltve, amely továbbítja a vezető glShaderSource.
  • Ezt követően a shader összeállított glCompileShader.
  • Számos különböző típusú árnyékolóalgoritmusokat csatolt glAttachShader programot
  • Az utolsó lépés - linkovanie csatolt shader egy shader programot glLinkProgram.
Térjünk gyakorolni, és nézd meg egy kis példa, amely az OpenGL 2.0. de nem használ rögzített grafikus csővezeték, amely lehetővé teszi, hogy olyan közel OpenGL 3.3. Ez segít biztosítani a zökkenőmentes átmenetet az új változat a OpenGL és könnyebb lesz dolgozni OpenGL ES 2.0 / 3.0. mint az OpenGL ES 2.0 / 3.0 is hiányzik a rögzített grafikus csővezeték.

Fogjuk használni vertex és fragment shader, mert nélkülük modern változatai OpenGL nem fog festeni. Más típusú shaderek még nem fogja figyelembe venni, mert nem OpenGL 2.0, és nem szükséges az OpenGL 3.3 és újabb.

Mentse el az oldalt!

Kapcsolódó cikkek