Átlátszó tárgyak
Ebben a cikkben szeretnék egy ilyen figyelemre méltó hatást átláthatóbbá tenni. Számos módja van a jelenet átláthatóságának növelésére, és fontolja meg közülük többet. de egy kicsit később, először szeretnék egy kicsit elmenni a témáról, és megmondanék, hogyan készült a példa, így később nem voltak felesleges kérdések;)
Nem zavarja, hogy az írás alkalmazás keretrendszer, szoktam D3DFramework, ami jön DX9SDK és fel lehet használni, hogy könnyen teremt szerény alkalmazások (mint a miénk). A keret létrehozásához a DX9Appwizard-t használtam.
Továbbá, mivel én vagyok rettenetesen lusta ember, a doboz, amely fel van húzva a példa, nem akartam felhívni rendezi és használt D3DXCreateBox () függvényt. Ezután segítségével CloneMesh () metódus interfész ID3DXMesh tettem a dobozt a jobb vertex formában, az úton, a vertex formátum bemutatása nem a FVF és segítségével Vertex Nyilatkozat (ha bármilyen kérdése van ebben a kérdésben, kérem a fórum, beszélgetés :). Szintén felhívtam a hátteret, hogy világosabban láthassam e vagy a módszer munkáját.
Mint minden, amit elmondtak, tényleg a lényegre!
Az alfa blendelés olyan képeket jelenít meg, amelyekben átlátszó vagy félig átlátszó képpontok vannak. A piros, zöld és kék színkomponens mellett minden pixelnek van egy "átlátszó" komponense, amely népszerű az alfa-csatorna. Az alfa-csatorna általában ugyanannyi bitgel rendelkezik, mint a fő színcsatorna. Például, nyolc-bites alfa csatorna lehet 256 szintű átláthatóság, 0-tól (teljesen átlátszó pixel) és 255 (pixel nem teljesen átlátszó).
Az alfa-keverés engedélyezéséhez a Direct3D-ben be kell állítania a D3DRS_ALPHABLENDENABLE paramétert TRUE értékre:
A Direct3D-ben a szín megadható egy alfa-csatorna (RGBA) és anélkül is (RGB). Az átlátszóság lehet csúcsok, anyag, textúrában. A keretpuffer használatával is végezhet néhány effektust.
Nézzük ezeket a módszereket részletesebben.
A módszer neve önmagáért beszél. Az alfa csatornát az objektum minden csúcsán tároljuk. A módszer engedélyezéséhez be kell állítania a D3DRS_DIFFUSEMATERIALSOURCE paramétert a D3DMCS_COLOR1-ben. Ezzel világossá tesszük, hogy a vertex adatokból színt akarunk használni, nem pedig anyagból.
Vegyük fontolóra, hogy mit jelentenek ezek a paraméterek:
D3DRS_DIFFUSEMATERIALSOURCE - meghatározza a szín forrását a világítás számításához. Lehetséges a következő értékek:
D3DMCS_MATERIAL - az aktuális anyag színét használja
D3DMCS_COLOR1 - diffúz színt használ a csúcsról
D3DMCS_COLOR2 - a csúcsból származó specularis színt használ
Az alapértelmezett érték a D3DMCS_COLOR1.
Továbbá meg kell engednünk a Direct3D-nek, hogy szeretnénk, ha a csúcsfesték részt vesz a világítási számításban. Ez a következőképpen történik:
Alapvetően ez az állapot alapértelmezetten IGAZ, de szükség van tűzoltókra.
Most pedig egy alfa-csatornát kell hozzáadnunk a doboz minden csúcsához:
Az alfa csatornát az első pár szám adja meg. A kényelem érdekében használhatja a D3DCOLOR_ARGB makrót (alfa, piros, zöld, kék). Minden makróparaméter értéke 0 és 255 között lehet.
Nem gondolom részletesen a csúcsok formátumát, mert ez nem felel meg a cikk témájának, de megismétlem, ha vannak kérdések, akkor megkérdezem a fórumot, feltétlenül válaszolok.
Ez az egész, most, miután megteremtettük a renderelő csővezeték szükséges állapotát, felhívjuk a dobozunkat:
És itt az eredmény:

Az alfa csatornát az anyagban is meghatározhatjuk. Ehhez hozzon létre egy anyagot, amely tartalmazza azt:
A módszer engedélyezéséhez állítsa a D3DRS_DIFFUSEMATERIALSOURCE értéket a D3DMCS_MATERIAL mezőbe:
Ez minden. Felejthetetlen az anyagunk felszereléséhez, rajzoljon egy dobozt, és nézze meg, mi történt.
