2. gyakorlat DirectX 2007/2008 tavasz Klár Gergely

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Osztály leszármaztatás
Számítógépes grafika DirectX 2. gyakorlat. Emlékeztető  Előző órán szó volt a COM modellről, amiben az objektumok eljárásait az általuk megvalósított.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
2010/2011 ősz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál  Részei.
GraphGame gg001-Triangle
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Objective- C Bereczki Gréta Tamara
2D grafikus rendszerek Szirmay-Kalos László. 2D grafikus editor: GUI, use-case, dinamikus modell L L L R LD LU MouseLDown első pont MouseLDown második...
Bevezetés.  A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja  Teljesítménykövetelmények:  Animáció: néhány nsec.
Mesh betöltés, kirajzolás Szécsi László. dx11-ben nincs – játékfejlesztők írnak maguknak úgyis DXUT-ban van – CDXUTSDKMesh – csak sdkmesh formátumot tud.
GPGPU labor I. OpenGL, Cg.
Öröklődés 2..
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
Készítsünk el egy olyan egy dokumentumos (SDI) alkalmazást, amely alkalmas a mysql adatbáziskezelővel létrehozott BANK adatbázisunk UGYFEL táblájának.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
C# tagfüggvények.
C# tagfüggvények.
Számítógépes grafika OpenGL 1. gyakorlat.
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
További vektor, mátrix algoritmusok
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
Fejlett grafikai algoritmusok Megvilágítási modellek
Számítógépes grafika 3. gyakorlat.
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Számítógépes Grafika Megvilágítás Programtervező informatikus (esti)‏
2008/2009 tavasz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál 
2008/2009 tavasz Klár Gergely  Gyakorlatok időpontjai: ◦ Szerda 10:05–11:35 ◦ Csütörtök 10:00+ε –11:30+ε  Gyakvez: ◦ Klár Gergely ◦
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
Terep Szécsi László. Mechanizmus NxHeightField-ek definiálása PhysicsModel-be NxHeightFieldShapeDesc-ek betöltése Mesh-ek gyártása az NxHeightField- ekből.
DirectX9 empty project Szécsi László. Visual Studio Első indításkor C++ választása.
Environment mapping Szécsi László. Új osztály: Lab3EnvMap copy&paste: Lab2Trafo.h -> Lab3EnvMap.h copy&paste: Lab2Trafo.cpp -> Lab3EnvMap.cpp copy&paste:
DirectX9 empty project Szécsi László. Project létrehozása Microsoft DirectX SDK (August 2008) telepítése Start Menu \ Microsoft DirectX SDK (August 2008)\
Effect framework, HLSL shader László Szécsi. forráskódban elérhető egyszerűsíti a shaderek fordítását, rajzolási állapot beállítását – pass: egy ilyen.
OO framework, Egg util library László Szécsi. Projektek nem osztoznak semmilyen kódon – DXUT mindegyikben – effect betöltés, mesh betöltés, GUI mindegyikbe.
Pipeline Vertex shader Fragment shader. Transzformációs modul A modellünket a saját koordinátarendszerében adjuk meg Azonban a saját koordinátarendszerükben.
Számítógépes grafika DirectX 2. gyakorlat. Emlékeztető Előző órán áttekintettük a szükséges WinAPI- s alapokat Illetve röviden beletekintettünk a félév.
Számítógépes grafika DirectX 5. gyakorlat. Emlékeztető Háromdimenziós alapok befejezése Textúrázás.
Számítógépes Grafika 7. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
ELTE-IK, Számítógépes grafika 2./haladó 2. gyakorlat Klár Gergely.
Programozás I. Típus algoritmusok
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Számítógépes grafika OpenGL 5. gyakorlat.
Számítógépes grafika gyakorlat: DirectX 2007/2008 tavasz Klár Gergely
Ficsor Lajos Objektumok inicializálása CPP4 / 1 Objektumok inicializálása Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Weboldalba ágyazott interaktív feladatok GeoGebra módra Papp-Varga Zsuzsanna ELTE IK Média- és Oktatásinformatika Tanszék
Számítógépes grafika DirectX 7. gyakorlat. Emlékeztető Múlt órán mesheket és transzformációkat használtunk Most primitívkirajzoláshoz nézünk meg egy hasznos.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Neumann János Informatikai Kar
A CLIPS keretrendszer
Vizualizáció és képszintézis
GPGPU – CUDA 2..
Sw2 PhysX.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
A struct, az union és az enum típus
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
CUDA – OpenGL.
Függvénysablonok használata
Előadás másolata:

2. gyakorlat DirectX 2007/2008 tavasz Klár Gergely

Tartalom DXFrame használata Események Rajzolás VertexBuffer-rel Primitív típusok Transzformációk

Események sorrendje 1. onCreateDevice 2. onResetDevice 3. DXUT main loop ◦Futásközben 1.onFrameMove 2.onFrameRender ◦Átméretezés, minimalizálás, ALT+TAB hatására 1.onLostDevice 2.onResetDevice ◦Bármikor  msgProc  keyboardProc  mouseProc 4. onLostDevice 5. onDestroyDevice

Mit, mikor? onCreateDevice ◦ D3DPOOL_MANAGED erőforrások létrehozása onDestroyDevice ◦onCreateDevice-ban létrehozott erőforrások felszabadítása onResetDevice ◦ D3DPOOL_DEFAULT erőforrások létrehozása onLostDevice ◦onCreateDevice -ban létrehozott erőforrások felszabadítása

Mit, mikor? onFrameMove ◦Logikai feladatok (számítás, file-kezelés, kommunikáció, stb.) onFrameRender ◦Rajzolás

Mit, mikor? keyboardProc ◦Billentyűzet kezelés mouseProc ◦Egér kezelés msgProc ◦Bármilyen Windows-os üzenet kezelése

DXFrame használata 1. Saját osztály leszármaztatása 2. Használt metódusok felüldefiniálása 3. Header include-olása az EmptyProject.cpp -be #include ”Sample1.hpp” 4. Objektum létrehozása WinMain -ben myFrameWork = new Sample1();

Konstruktor DXFrame(const WCHAR *windowTitle, int width, int height, bool windowed) Minden paraméternek van default értéke Leszármazott konstruktora megadhat más értékeket is

Rajzolás DirectX-szel

Példa Rajzoljunk ki egy háromszöget a képernyőre!

Lépések Szerkezet ◦Új osztály származtatása a DXFrame-ből ◦Használt metódusok felüldefiniálása ◦Csúcspont formátum (FVF) meghatározása Inicializálás ◦Csúcspont adatok megadása ◦VertexBuffer létrehozása ◦VertexBuffer feltöltése Rajzolás ◦Képernyőtörlés ◦Formátum megadása ◦VertexBuffer kiválasztása ◦Rajzolás Takarítás

Használt metódusok HRESULT onCreateDevice(); void onDestroyDevice(); Ezt a kettőt mindig együtt használjuk! void onFrameMove( double fTime, float fElapsedTime ); void onFrameRender( double fTime, float fElapsedTime );

Flexible Vertex Format Milyen adatokat akarunk tárolni a csúcspontok mellet? ◦Pozíciót mindenképpen: D3DFVF_XYZ ◦Szín adatokat: D3DFVF_DIFFUSE, D3DFVF_SPECULAR ◦Normál vektort: D3DFVF_NORMAL ◦Textúra koordinátákat: D3DFVF_TEX1,...

FVF megadása FVF leíró: enum {FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE}; FVF struktúra struct VERTEXFORMAT { D3DXVECTOR3 v; D3DCOLOR col; };

Csúcspont adatok megadása VERTEXFORMAT vs[3]; vs[0].v = D3DXVECTOR3(0,0.5f,0); vs[1].v = D3DXVECTOR3( 0.5f,-0.5f,0); vs[2].v = D3DXVECTOR3(-0.5f,-0.5f,0); vs[0].col = vs[1].col = vs[2].col = D3DXCOLOR(0.5f, 0.6f, 1.0f, 1);

VertexBuffer létrehozása HRESULT hr; V( _device->CreateVertexBuffer( sizeof(VERTEXFORMAT) * 3, 0, FVF, D3DPOOL_MANAGED, &_vbuffer, 0));

VertexBuffer feltöltése void * vdata; V( _vbuffer->Lock(0, sizeof(VERTEXFORMAT) * 3, &vdata, 0) ); CopyMemory(vdata, vs, sizeof(VERTEXFORMAT) * 3); _vbuffer->Unlock();

Psszt! _device-> SetRenderState(D3DRS_LIGHTING, FALSE); A világítás számítást ki kell kapcsolni, különben fekete lesz a háromszögünk!

Rajzolás _device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(65, 105, 225), 1, 0); if ( SUCCEEDED(_device->BeginScene()) ) { _device->SetStreamSource(0, _vbuffer, 0, sizeof(VERTEXFORMAT)); _device->SetFVF(FVF); _device-> DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1); _device->EndScene(); }

Takarítás SAFE_RELEASE(_vbuffer); Konstruktorban _vbuffer –t nullázuk!

Kész!

További feladatok Más primitívek Transzformációk Mozgatás Tetraéder