Számítógépes grafika 3. gyakorlat
Eddig Window programozási alapok Üres ablak létrehozása Kép betöltése Képek mozgatása Ablak manipulálása
Mai órán 3D-s alapismeretek Vertexek használata (program) Shader programozás Vertexek manipulálása shader programokkal
3D alapok Programjainkban ún. modellekkel fogunk dolgozni Modellek készülhetnek általunk DX-ben, vagy egy külső program által létrehozva, amit a programunkba importálunk Ez utóbbi a gyakoribb – komplex objektumok megjelenítése
3D alapok A modellek vertexekből állnak. A vertexek egy megadott össze(nem)kötése ad pontokat, vonalakat, háromszögeket, háromszögláncot, stb. Ezek összessége primitíveket alkot. A primitívek összessége 3D-s térbeli entitást eredményez. Mi általában háromszögekkel fogunk dolgozni
Direct3D primitívjei D3DPT_POINTLIST D3DPT_LINELIST D3DPT_LINESTRIP D3DPT_TRIANGLELIST D3DPT_TRIANGLESTRIP D3DPT_TRIANGLEFAN
Vertexek Gyakorlatilag a csúcspontok De nem csak a koordinátákat tárolhatjuk Normális, szín, stb Vertexek mindig vertex bufferben tárolandók A vertex bufferek erőforrások
Erőforrások DX-ben Minden erőforrás rendelkezik az alábbi tulajdonságokkal: - USAGE: felhasználási mód - FORMAT: adatformátum - POOL: memóriatípus, ahová kerül - TYPE: típus, lehet vertex buffer, render cél, stb.
Erőforrások DX-ben Usage Az alkalmazásnak meg kell mondania, milyen módon szeretné használni az erőforrást D3DUSAGE_POINTS: pont sprite- okat tartalmazó buffer D3DUSAGE_WRITEONLY: csak írni szeretnénk az adott buffert
Erőforrások DX-ben Format Az erőforrás tárolási formátumát jelöli Az erőforrás típusától függenek az értékei Más a back bufferhez, a vertex bufferhez, a megjelenítési felületekhez, stb.
Erőforrások DX-ben Pool Ez határozza meg, hogy az adott erőforrás hová kerül Pl. videókártya-memória, rendszermemória, stb. Ez NEM változtatható futás során. D3DPOOL_DEFAULT: az erőforrás a felhasználása szerinti legjobb helyre kerül.
Erőforrások DX-ben Pool D3DPOOL_MANAGED: amint szükséges, a videókártya által elérhető memóriába másolódnak az erőforrások D3DPOOL_SYSTEMMEM: rendszermemóriába. Ezek nem érhetők el Direct3D Device által, de a lost device sem érinti.
Erőforrások DX-ben Type A típus futási időben derül ki az erőforrást létrehozó eljárástól függően. A CreateTexture eljárás pl értelemszerűen egy textúra típust hoz létre. A CreateVertexBuffer vertex buffer típust...
Vertex bufferek IDirect3DVertexBuffer9 interfész Vertex adatok tároló memóriaterület A csúcsok benne transzformálhatók (eltolás, skálázás, forgatás), világíthatóak, stb Eleve transzformált pontok (RHW) Egy vertex buffert a képességei írnak le
FVF Flexible Vertex Format Leszűkíthető, hogy a csúcspontokkal mit akarunk megcsinálni Az FVF segítségével adhatjuk meg, hogy a vertex bufferben tárolt csúcsokkal mit szeretnénk kezdeni. D3DFVF_XYZ, D3DFVF_XYZRHW, D3DFVF_NORMAL, D3DFVF_DIFFUSE
Lássuk A lunyi.web.elte.hu címről A 3. óra mappájában Az 1-es vagy a 2-es kódot nézzük
CG C for Graphics NVidia fejlesztette az évezred elején (MS) C-n alapuló magas szintű nyelv a grafikus hardver programozásához HLSL vagy GLSL kódot generál a CG fordító
CG típusok Szokásos C-s adattípusok További alap adattípusok: - half: 16 bites lp - fixed: 12 bites fp - sampler: textúrához Plusz - float3, float4x4 ...
CG műveletek Vektor műveletek - dot - cross Egyéb - lerp Bővebben: http://http.developer.nvidia.com/Cg/index_stdlib.html
Lássuk A lunyi.web.elte.hu címről A 3. óra mappájában Az 3-as vagy a 4-es kódot nézzük