Textúra koordinátái (Direct3D 9)
A legtöbb anyagminta, például a bitképek, a színértékek kétdimenziós tömbje. A köbkörnyezet térképmintái kivételt képeznek. További információ: Cubic Environment Mapping (Direct3D 9). Az egyes színértékeket textúraelemnek vagy texelnek nevezzük. Minden texelnek egyedi címe van a textúrában. A cím oszlop- és sorszámként is felfogható, amelyek az alábbi ábrán Ön és v címkével vannak ellátva.
A textúra koordinátái a textúra területén vannak. Ez azt jelent, hogy az anyagmintában lévő helyhez (0,0) viszonyítva vannak. Ha a felületi mintázatot egy 3D térben lévő primitívre alkalmazza, a texel-címeket objektumkoordinátákba kell képezni. Ezeket ezután képernyőkoordinátákká vagy képponthelyekre kell lefordítani.
Texels leképezése képernyőtérre
A Direct3D közvetlenül a képernyőtérben lévő képpontokra térképezi le a texeleket, és kihagyja a köztes lépést a nagyobb hatékonyság érdekében. Ez a leképezési folyamat valójában inverz leképezés. Vagyis a képernyőtér minden egyes képpontja esetében kiszámítja a megfelelő texel pozíciót a textúratérben. A minta az adott ponton vagy körülötte lévő anyagminta színét is megszűni. A mintavételezési folyamatot textúraszűrésnek nevezzük. További információ: Textúraszűrés (Direct3D 9).
Az anyagmintában lévő egyes texeleket a texel koordináta határozza meg. A texelek primitívekre való leképezéséhez azonban a Direct3D egységes címtartományt igényel az összes texelhez az összes anyagmintában. Ezért általános címzési sémát használ, amelyben az összes texel-cím 0,0 és 1,0 közötti tartományban van. A Direct3D-alkalmazások a textúra koordinátáit az Ön és a v értékek alapján határozzák meg, hasonlóan a 2D cartesian koordinátákhoz, x,y koordinátákban vannak megadva. A rendszer technikailag képes a 0,0 és 1,0 tartományon kívüli textúrakoordinátákat feldolgozni, és ezt a textúracímzéshez beállított paraméterek használatával teszi. További információ: Textúracímzési módok (Direct3D 9).
Ennek az az eredménye, hogy az azonos textúracímek különböző texel koordinátákra képezhetők le különböző textúrákban. Az alábbi ábrán a textúra címe (0.5,1.0). Mivel azonban a textúrák különböző méretűek, a textúra címe különböző texelekre van leképezve. A bal oldali 1. textúra 5x5. A textúra címe (0.5,1.0) a texelhez (2,4) van leképezve. Textúra 2, a jobb oldalon, 7x7. A textúra címe (0.5,1.0) a texelhez (3,6) van leképezve.
A texel-leképezési folyamat egyszerűsített verziója az alábbi ábrán látható. Igaz, ez a példa rendkívül egyszerű. További információ: Texels közvetlen leképezése képpontokhoz (Direct3D 9).
Ebben a példában az ábra bal oldalán látható képpont szín négyzetre van idealizálva. A képpont négy sarkának címei a térbeli 3D primitívre vannak leképezve. A képpont alakja gyakran torzul a térbeli primitív alak és a betekintési szög miatt. A pixel sarkainak megfelelő primitív felület sarkai a textúratérbe lesznek leképezve. A leképezési folyamat ismét torzítja a képpont alakját, ami gyakori. A képpont végső színértékének kiszámítása a képpont leképezési régiójában lévő texelekből történik. A Textúraszűrési módszer beállításakor ön határozza meg, hogy a Direct3D milyen módszerrel éri el a képpont színét. További információ: Textúraszűrés (Direct3D 9).
Az alkalmazás közvetlenül a csúcsokhoz rendelhet textúrakoordinátákat. Ezzel a funkcióval szabályozhatja, hogy a textúra mely részét képezi le egy primitív. Tegyük fel például, hogy egy téglalap alakú primitívet hoz létre, amely pontosan megegyezik az alábbi ábrán látható anyagmintával. Ebben a példában azt szeretné, hogy az alkalmazás a teljes anyagmintát az egész falra képezhesse le. Az anyagminta koordinálja az alkalmazás által a primitív csúcsokhoz rendelt értékeket: (0.0,0.0), (1.0,0.0), (1.0,1.0) és (0.0,1.0).
illusztrációja
Ha úgy dönt, hogy félével csökkenti a fal magasságát, eltorzíthatja az anyagmintát, hogy a kisebb falra illeszkedjen, vagy olyan anyagmintázati koordinátákat rendelhet hozzá, amelyek miatt a Direct3D a textúra alsó felét használja.
Ha úgy dönt, hogy torzítja vagy skálázza az anyagmintát, hogy illeszkedjen a kisebb falhoz, a használt textúraszűrési módszer befolyásolja a kép minőségét. További információ: Textúraszűrés (Direct3D 9).
Ha ehelyett úgy dönt, hogy textúrakoordinátákat rendel hozzá, hogy a Direct3D a kisebb falhoz a textúra alsó felét használja, akkor az alkalmazás által a primitív csúcsokhoz rendelt textúra koordinátái a következők: (0.0,0.5), (1.0,0.5), (1.0,1.0) és (0.0,1.0). A Direct3D a textúra alsó felét alkalmazza a falra.
Lehetséges, hogy a csúcsok anyagmintázatkoordinátái 1,0-nál nagyobbak lehetnek. Ha olyan csúcsponthoz rendel textúrakoordinátákat, amelyek nem 0,0 és 1,0 közötti tartományban vannak, akkor a textúracímzési módot is be kell állítania. További információ: Textúracímzési módok (Direct3D 9).
Textúrakoordináták és textúraszakaszok
A textúrakoordinátákat a textúrák fázisai alapján társítják az anyagmintához. A textúrák a SetTexture(stageIndex, pTexture) használatával lesznek hozzárendelve a textúraszakaszokhoz. Lásd: IDirect3DDevice9::SetTexture.
Egy rugalmas csúcspontformátum (FVF) kód legfeljebb nyolc textúrakoordinátát definiálhat. A struktúrakoordináta-adatokat a felhasználó a csúcsadatokban szolgáltatja. Az adatokra nulla alapú index hivatkozik: 0 – 7. Legfeljebb nyolc anyag keverési szakasza van. A textúra egy adott fázishoz van társítva a SetTexture (stageIndex, pTexture) használatával.
Ha ez megtörtént, a textúrakoordinátákat bármelyik fázis használhatja. Minden koordináta-készlet a SetTextureStageState( stageIndex, D3DTSS_TEXCOORDINDEX, textureCoordinateIndex) használatával van társítva egy fázishoz. Lásd: IDirect3DDevice9::SetTextureStageState. Így a keverési szakaszok beállíthatók bármilyen anyagminta és anyagminta koordinátáinak használatára. Több fázis is használhatja ugyanazokat a textúrákat, vagy a textúra koordinátáit.
További információt az alábbi témakörök tartalmaznak.
Kapcsolódó témakörök