[ eva01 @ 24.03.2005. 01:15 ] @
Pokusavam da optimizujem velicinu mog fvf verteksa na 2^n. Konkretno imam xyz, uv1 i uv2. Dakle nedostaju mi jos 4 bajta. E sada ovo mi je uspesno poslo za rukom tako sto sam samo povecao velicinu verteksa na 32 bajta. Ipak onda d3d generise warning-e kako se fvf format ne slaze sa velicinom verteksa. Jedino sto mi pada na pamet da izbegnem ovo je da dodam jos jedne koordinate za teksturu (u ovom slucaju samo jednu koordinatu). Dakle interesuje me dali postoji neki regularniji nacin da se ovo odradi ?

Ujedno i cemu sluze Mask Flags (D3DFVF_POSITION_MASK, D3DFVF_RESERVED0 ....) ?
[ bkaradzic @ 24.03.2005. 03:08 ] @
Obično na PC-u niko nije vertex transformation ili rasterization bound, nego driver bound. Zato umesto optimizovanja strukture vertex-a je bolje misliti o tome kako da se napravi što manje interakcije između DX->driver->GPU. I onako driver prevodi sve to što šalješ na GPU u format koji GPU može da "sažvaće" i koji je uglavnom izmešan sa registrima koje GPU prepoznaje. Znači ono kako ti vidiš stvari u DX nije baš kako GPU vidi kada podaci stignu tamo.

Pogledaj ovaj dokument:
http://www.ati.com/developer/dx9/ATI-DX9_Optimization.pdf

Branimir
[ Reljam @ 24.03.2005. 07:20 ] @
Branimir je u pravu, obicno se ne dobija na brzini time sto povecavas velicinu verteksa.

Inace, FVFovi su stari format, sada se preporucuje da koristis D3DVERTEXELEMENT9.
[ Reljam @ 24.03.2005. 07:28 ] @
A odgovor na tvoje drugo pitanje: POSITION_MASK sluzi da mozes lako da pogledas kako treba vertex da se transformise (XYZ ili XYZRHW) - samo treba da and-ujes FVF sa POSITION_MASKOM. Dakle, to nije nesto sto treba da ubacis u tvoj FVF kod.

RESERVED0 i RESERVED2 rezervisu tri bita FVF koda za neke buduce opcije. Znaci ni njih ne treba da koristis.
[ eva01 @ 24.03.2005. 22:48 ] @
To se otprilike i slaze sa onim sto sam dobio tj. nisam dobio nista.