@@ -148,3 +148,268 @@ Ilyenkor *clamp*-elni kell az általunk használni kívánt értéket a felszín
A `surface_capabilities`-t majd az ablakfelszín segítségével fogjuk megkapni, a `framebuffer_size`-t pedig maga az ablak adja.
### Surface format
A következő lépés, hogy megadjuk a képek pixelformátumát.
Ez lehetne például a jól ismert RGBA (red, green, blue, alpha), ahol minden *color channel* 8 bit-et kap.
Azonban a legtöbb képernyő a BGRA-t támogatja jól.
A másik tulajdonság a színcsatornákban lévő értékek eloszlása/linearitása.
Mivel a szemünk nem lineáris intenzitással érzékeli az adott értékekhez tartozó fényt, ezért érdemes egy nem lineáris *color space* formátumot választani.
??? note "Mi ez a sok paraméter amit megadtunk a swapchain-nek?"
- `imageArrayLayers` -
Ez mindig egy, hacsak nem egy [sztereoszkopikus](https://en.wikipedia.org/wiki/Stereoscopy) alkalmazást fejlesztünk.
- `imageUsage` -
Ezzel megadjuk, milyen módon fogjuk majd használni a képeket.
Mivel jelenleg csak rajzolni fogunk rájuk, ezért *color attachment*-ként fogjuk őket használni, de akár *transfer*-hez is használhatnánk például *post-processing*-hez.
- `imageSharingMode` -
Több családból származó queue-k esetén beállíthatjuk, hogy egy kép melyik család tulajdona legyen.
Mi csak csak egy queue-t használunk, ezért exkluzívan ő uralja a képet.
Más esetben megadhatunk konkurrens tulajdon módot is.
- `preTransform`
A képekhez hozzárendelhetünk valamilyen transformációt is.
Amennyiben ezzel nem szeretnénk élni, úgy a `surface_capabilities.currentTransform`-ot kell használni.
- `compositeAlpha`
Ezzel megadhatjuk, hogy átfedésben lévő ablakok hogyan hassanak a képre (blending).
- `clipped`
Amennyiben egy másik ablak miatt fedésbe kerülnek bizonyos pixelek, eldönthetjük, hogy megtartsuk-e őket későbbi műveletektre.