Megosztás a következőn keresztül:


Full-Scene Antialiasing (Direct3D 9)

A teljes jelenet antialiasing a jelenetben található egyes sokszögek széleinek elmosását jelenti, mivel egyetlen menetben raszterizálódik; így nincs szükség második menetre. A teljes körű antialiasing, ha támogatott, csak a háromszögekre és háromszögcsoportokra vonatkozik. A vonalak nem simíthatók Direct3D-funkciókkal. A teljes jelenet antialiasing a Direct3D-ben történik, minden képponton többmintavételezést alkalmazva. Ha engedélyezve van a többminta-készítés, a képpontok összes almintái egy menetben frissülnek, de ha más, több renderelési passzot tartalmazó effektusokhoz használják, az alkalmazás megadhatja, hogy csak bizonyos almintákat érintsen egy adott renderelési pass. Ez utóbbi megközelítés lehetővé teszi a mozgás elmosódásának, a mélységi fókusz effektusainak, a tükröződés elmosódásának stb. szimulációját.

Mindkét esetben az egyes képpontokhoz rögzített különböző minták összeolvadnak, és a képernyőre kerülnek. Ez lehetővé teszi az antialiasing vagy más hatások jobb képminőségét.

Mielőtt eszközt hozna létre az IDirect3D9::CreateDevice metódushasználatával, meg kell állapítania, hogy támogatott-e a teljes képernyős élsimítás. Ehhez hívja meg az IDirect3D9::CheckDeviceMultiSampleType metódust az alábbi kód példában látható módon.

/*
* The code below assumes that pD3D is a valid pointer 
*   to a IDirect3D9 interface.
*/

if( SUCCEEDED(pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT, 
                    D3DDEVTYPE_HAL , D3DFMT_R8G8B8, FALSE, 
                    D3DMULTISAMPLE_2_SAMPLES, NULL ) ) )
// Full-scene antialiasing is supported. Enable it here.

Az IDirect3D9::CheckDeviceMultiSampleTypeáltal elfogadott elsőparaméter egy sorszám, amely a lekérdezéshez használni kívánt megjelenítési adaptert jelöli. Ez a minta a D3DADAPTER_DEFAULT-et használja az elsődleges kijelzőadapter megadásához. A második paraméter az D3DDEVTYPE számbavételi típusból származó érték, amely megadja az eszköz típusát. A harmadik paraméter a felület formátumát adja meg. A negyedik paraméter azt jelzi a Direct3D-nek, hogy a teljes ablakos több-mintavételezés (TRUE) vagy a teljes jelenetes élsimítás (FALSE) iránt érdeklődik-e. Ez a minta FALSE használatával jelzi a Direct3D-nek, hogy teljes körű antialiasingot keres. Az utolsó paraméter a tesztelni kívánt többampling technikát adja meg. Használjon D3DMULTISAMPLE_TYPE számbavételi típusból származó értéket. Ez a mintateszt azt vizsgálja, hogy támogatott-e két fokozatú többszörös mintavételezés.

Ha az eszköz támogatja a használni kívánt többszörös mintavétel szintjét, a következő lépés a prezentálási paraméterek beállítása a D3DPRESENT_PARAMETERS struktúra megfelelő tagjainak kitöltésével, hogy többszörös mintavételű renderelési felületet hozzon létre. Ezután létrehozhatja az eszközt. Az alábbi mintakód bemutatja, hogyan állítson be egy eszközt egy többmintás renderelési felülettel.

/*
* The example below assumes that pD3D is a valid pointer 
* to a IDirect3D9 interface, d3dDevice is a pointer to a 
* IDirect3DDevice9 interface, and hWnd is a valid handle
* to a window.
*/

D3DPRESENT_PARAMETER d3dPP
ZeroMemory( &d3dPP, sizeof( d3dPP ) );
d3dPP.Windowed        = FALSE
d3dPP.SwapEffect      = D3DSWAPEFFECT_DISCARD;
d3dPP.MultiSampleType = D3DMULTISAMPLE_2_SAMPLES;
pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                    D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                    &d3dpp, &d3dDevice)

A többszörös mintavételezés használatához a D3DPRESENT_PARAMETER SwapEffect tagját D3DSWAPEFFECT_DISCARD értékre kell állítani.

Az utolsó lépés a többtényezős antialiasing engedélyezése a IDirect3DDevice9::SetRenderState metódus meghívásával, és a D3DRS_MULTISAMPLEANTIALIAS beállítása true . Amikor ezt az értéket TRUEértékre állítja, minden renderelésnél alkalmazni fogják a többszörös mintavételezést. Az, hogy engedélyezni vagy letiltani érdemes a multisamplinget, attól függ, mit renderel.

Antialiasing