Többelemes textúrák (Direct3D 9)
A hagyományos textúrák egyelemű textúráknak minősülnek. A többelemes textúrák lehetővé teszik, hogy az alkalmazások egyszerre írjanak a textúra több elemére a képpontárnyékolóból. A következő renderelési lépés eredménye, hogy egy alkalmazás egy vagy több elemet használhat egyelemes textúraként , azaz a képpontárnyékoló bemeneteként. Ezek a további elemek ideiglenes tárolóként tekinthetők a köztes eredményekhez, amelyeket az alkalmazás egy későbbi lépésben fog használni.
A funkciót elérhetővé tevő hardverek első generációja a következő korlátozásokkal rendelkezik:
- A rendszer automatikusan lefoglalja a többelemű felületeket. Ezt a korlátozást úgy hárítjuk el, hogy ezt egy új típusú felületi formátumként kezeljük több RGBA-csatornával.
- A többelemes anyagminta minden eleme azonos bitmélységű lehet. Ezt a korlátozást az új felületformátumok neve fejezi ki.
- A többelemes textúra nem lehet elsődleges/megjeleníthető. Más szóval csak a képernyőn kívül kell lennie. Ezt a korlátozást a felületformátumú számbavétel fejezi ki.
- Nem engedélyezett az osztás, az alfateszt, a lemosás, a keverés, a raszter-op vagy a maszkolás. A z-teszt és a rajzsablon tesztelése kivételével nem történik képpont utáni árnyékolófeldolgozás.
- A textúra nem lehet mipmap. A mip-lánc létrehozása sikertelen lesz.
- Ugyanaz az elem nem állítható be textúraként, ugyanakkor renderelési célként. Ugyanannak a többelemes anyagmintának a különböző elemei ugyanakkor textúrák és renderelési célok is lehetnek.
- Az antialiasing nem támogatott.
- A többelemes textúrafelületek nem szűrhetők, ha textúraként használják. Ez a korlátozás CheckDeviceFormathasználatával ellenőrizhető.
- A többelemes textúrafelületek nem zárolhatók.
- Egyszerre több elemből álló textúrafelület is használható úgy, hogy mindegyik különböző fázishoz van rendelve, csakúgy, mint a normál textúrák esetében.
- A többelemű anyagminta felületek támogatják a gamma 2,2-ről 1,0-ra való konvertálását olvasási műveleten, ugyanúgy, mint más textúraformátumok esetében.
- Egyes implementációk nem alkalmazzák a kimeneti írási maszkot (D3DRS_COLORWRITEENABLE). Azok, amelyek független színírási maszkokkal rendelkezhetnek. Ezt egy új képességbit használatával fejezzük ki. A rendelkezésre álló független színírási maszkok száma megegyezik az eszköz által használható elemek maximális számával.
- Törlés törli a többelemes textúra összes elemét, amely renderelési célként van beállítva.
A többelemes textúrák használata az alábbi lépéseket követi:
- Az alkalmazások a többelemes textúraformátumok rendelkezésre állásának ellenőrzésével felfedezik a funkció támogatását.
- Az alkalmazás a CreateTexture meghívásával hozza létre ezeket a felületeket.
- Az alkalmazás renderelési célként állítja be a felületet a SetRenderTarget hívással. A képpontárnyékoló a mov - ps utasítással biztosít kimenetet a felületeknek.
- SetTexture egy többelemes textúrafelület adott szakaszra való beállításához hívjuk meg. Más textúrákhoz hasonlóan ugyanaz a felület egyszerre több fázisra is beállítható.
- SetSamplerState meghívásával a rendszer D3DSAMP_ELEMENTINDEX a mintavevő mintáinak megfelelő elemszámra állítja be. Ennek az állapotnak az alapértelmezett értéke 0, ami azt jelenti, hogy a nem többelemes textúrák működni fognak. Ha ezt az állapotot nem megfelelő számra állítja, nem definiált viselkedést eredményez – ha a többelemes textúra csak két elem széles, de a mintavevőnek például a negyedik elemből kell mintát adnia.
API-támogatás
Az alábbiakban összefoglaljuk a többelemes textúrákat támogató API-elemeket:
A D3DFMT_MULTI2_ARGB8 felületi formátum a formátum interleaved jellegét fejezi ki.
A D3DSAMP_ELEMENTINDEX mintavevő állapota azt jelzi, hogy melyik elemindexet kell használni.
A következő renderelési állapotok támogatják a többelemű textúrákat:
- D3DRS_COLORWRITEENABLE1
- D3DRS_COLORWRITEENABLE2
- D3DRS_COLORWRITEENABLE3
D3DRS_COLORWRITEENABLE nulla renderelési célra (vagy elemre) vonatkozik.
A D3DPMISCCAPS_INDEPENDENTWRITEMASKS jelző azt jelzi, hogy az eszköz támogatja a független írási maszkokat több elemmintához vagy több renderelési célhoz.
Kapcsolódó témakörök