Dr. Mileff Péter PhD

egyetemi docens

Általános Informatikai Tanszék,
Miskolci Egyetem


Grafika programozása - MSc tantárgy oktatási oldala

Jegyzet a tárgyhoz (pdf): Tantárgyi jegyzet (3. kiadott béta verzió - 2018)
A tárgy annotációja (pdf): Bemutatás
A tárgy ütemterve (pdf): Ütemterv


Tantárgy célja

A Grafika Programozása címû tárgy célja, hogy a napjaink szoftvereiben alkalmazott valósidejû gyakorlati számítógépes grafikát megismertesse a hallgatókkal. A tantárgy keretein belül különös figyelmet fordítunk a számítógépes játékok grafikai keretrendszereinek (graphics engine framework) megvalósítási alternatíváira, a kapcsolódó modulok, alrendszerek szerkezeti kialakítására, az objektum-orientált illetve strukturális terezési mintáira. Ismertetésre kerülnek a mai modern vizualizáció során alkalmazott módszerek, láthatósági algoritmusok, effektek, animáció és vezérlés elemek mind a 2D és 3D típusú megjelenítés esetén. A tárgy keretei belül a platformfüggetlen (Linux, Windows, OSX) fejlesztési modellre helyezõdik a hangsúly, grafikus API-ként az OpenGL szabványos keretrendszer kerül felhasználásra. A tantárgy második felében a GLSL árnyaló nyelv és lehetséges alkalmazásai kerülnek ismertetésre. Az anyag elsajátítása során a tárgy keretein belül több vezetõ grafikus motor felépítése kerül bemutatásra. A tárgy további célja, hogy féléves ismeretek elsajátítása során a hallgató képes legyen a mai játékokban jellemzõ látványhatások megvalósítására, egy saját grafikus keretrendszer létrehozására, valamint ilyen területen fejlesztõi és kutatói feladatok megoldására. A tárgy a grafikai ismeretek elsajátítása mellett elõsegíti a magasabb szintû, sebességre optimalizált programozási ismeretek bõvítését is. Ezért a maradéktalan elsajátítása alapszintû OpenGL és programozási ismereteket kíván meg.

Elõadás anyagok: (folyamatos feltöltés alatt)

Elõadás 1 - Számítógépes Grafika alapjai, elõzményei
Elõadás 2 - GPU architektúra, grafikus és játékmotorok
Elõadás 3 - Gyakorlati 2D grafika 1. rész
Elõadás 4 - Gyakorlati 2D grafika 2. rész
Elõadás 5 - Gyakorlati 2D grafika 3. rész
Elõadás 6 - Gyakorlati 3D grafika I.
Elõadás 7 - Gyakorlati 3D grafika II.
Elõadás 8 - Fények a számítógépes grafikában I.
Elõadás 9 - Fények a számítógépes grafikában II.



Gyakorlati anyagok: (folyamatos feltöltés alatt)

A gyakorlati anyagok a Code::Blocks fejlesztõ környezettel és gcc 4.6 fordítóval készültek. A forrás fájlok mellett megtalálhatók a kész projekt fájlok is.

Kép Példa leírása Nyelv, API Linux verzió Windows verzió
1. Ultra egyszerû SDL 1.2 alapú ablakfeldobás és esemélykezelés. Egy fekete képernyõt kell látni. C,SDL 1.2 Letöltés Letöltés
2. Kép betöltése és megjelenítése SDL2 alapokon. C,SDL2 Letöltés Letöltés
2. Natív OpenGL ablakfeldobás az operációs rendszer függvényeivel. Üres ablakot kell látni. C++,OpenGL Letöltés Letöltés
3. Egyszerű SFML demó, amely egy képet tölt be C++,SFML 2.2 Letöltés Még nincs
4. Egyszerû szoftveres renderer megvalósítása kezdetleges grafikai motor formába öntve. 3 darab textúrát kell látni. C++,SDL 1.2,OpenGL Letöltés Letöltés
5. Sprite Demo. Két mozgó Sprite-ot kell látni. C++,SDL 1.2,OpenGL,GLU Letöltés Letöltés
6. Egyszerû GLSL shader demo. Az árnyalóval egy textúra színét állíthatjuk az iránygombok segítségével. C++,SDL 1.2,OpenGL,GLSL Letöltés Letöltés
7. Egyszerû demo alkalmazás a GLSL fények demonstrálására. A program egy obj fájlt tölt be, forgatja, és megvilágítja GLSL árnyalók segítségével. Gombok: SPACE - forgatás megállítása, B - Drótvázas modell, S - váltás a 3-féle megvilágítás között. C++,SDL 1.2,OpenGL,GLSL Letöltés Letöltés
8. OpenGL 3.3 alapú 2D demo. A program egy képet rajzol ki OpenGL 3.3 alapokon. A kép az iránygombokkal mozgatható. C++,SDL 1.2,OpenGL 3.3,GLSL Letöltés Jelenleg nem elérhet?
9. "LightRoom" demó alkalmazás. Segítségével a fények tulajdonságait állíthatjuk, vizsgálhatjuk. Effektek: Per-pixel lighting, normal mapping, shadow mapping. C++,OpenGL 3.3,GLSL Letöltés Letöltés


Android alapú gyakorlati anyagok.
A példákhoz mellékelve van az az Eclipse környezet alapú projekt is, valamint a kész APK is.


Példa leírása Forráskód APK
1. Sprite Demo. Két mozgó Sprite-ot kell látni. A fenti 4. példa Android változata. Letöltés Letöltés


Java alapú gyakorlati anyagok

A gyakorlati anyagok a Lightweight Java Game Library API felhasználásával készült. A példákhoz Eclipse IDE-re van szükség, ahol a letöltött, kicsomagolt projektet kell importálni.

Kép Példa leírása Forráskód
1. Egyszerû demo alkalmazás, amely csak egy üres ablakot dob fel. Letöltés
2. Egyszerű Textúra demo. A program egy textúrát tölt be és rajzol ki OpenGL 3 alapokon. Letöltés
3. Textúra demo. Jobb felépítés, FPS szinkronizáció, timer. Letöltés
3. Pattogó labda. Kirajzolás gyakorlása kis algoritmizálás. Letöltés
4. Egyszerű hóesést szimuláló demó példa. Kirajzolás gyakorlása kis algoritmizálás. Letöltés
4. Textúra színcsatornáinak állítása shasder paraméterként. Gombokkal vezérelhető: Q,A,W,S,R,F Letöltés
5. Egyszerű StarField demó. Kirajzolás gyakorlása, színezés, algoritmizálás Letöltés
6. Sprite animáció. Textúrák betöltése, mozgatása. Letöltés
7. Befoglaló doboz (AABB) implementáció textúra objektumokra Letöltés
8. Bounding Box megvalósítása Sprite-okra. Letöltés
9. Játkobjektum osztály bevezetése. Letöltés
10. 2D Játékszíntér és layering struktúra bevezetése. A Objektum mozgatása gombok segítségével. Letöltés
11 a. 2D Kamera bevezetése. Működés: jobbra, balra gombokkal scrollozódik a tér. Letöltés
11 b. Parallax scroll megvalósítása. Kamera, GameObject, játékszíntér és layering struktúra Letöltés
12. 3D Egyszerű négyzet Letöltés
13. 3D Egyszerű négyzet forgásal Letöltés
14. 3D Egyszerű négyzet forgással és textúrával. Letöltés
15. 3D forgó kocka Letöltés
16. 3D forgó kocka textúrával Letöltés
17. 3D Wavefront OBJ model betöltő Letöltés
17. 3D Kamera mozgás Letöltés
18. 3D Point Light Demo Letöltés


Kötelezõ és javasolt irodalom jegyzéke:

  1. Szirmay-Kalos László, Antal György, Csonka Ferenc: Háromdimenziós grafika, animáció és játékfejlesztés, ComputerBooks, 2003.
  2. Szirmay-Kalos László: Számítógépes grafika, ComputerBooks, 1999.
  3. David H. Eberly: 3D Game Engine Architecture – Engineering Real Time Applications.
  4. André LaMothe: Tricks of the 3D Game programming Gurus Advanced 3D Graphics and Rasterization, 2003.
  5. Juhász Imre: OpenGL mobiDIÁK egyetemi jegyzet.
  6. Dr. Mileff Péter - A tantárgy saját jegyzete.