This shows you the differences between two versions of the page.
ppbg:laboratoare:05 [2024/10/02 09:57] andrei.lambru |
ppbg:laboratoare:05 [2024/11/07 09:58] (current) andrei.lambru |
||
---|---|---|---|
Line 59: | Line 59: | ||
Interacțiunea utilizatorului cu tastele, în situația în care fereastra este selectată, este de 3 feluri: | Interacțiunea utilizatorului cu tastele, în situația în care fereastra este selectată, este de 3 feluri: | ||
- | - Apăsarea unei taste pentru prima data în cadrul curent, cunoscută în limba engleză sub numele de **key press**. | + | - Apăsarea unei taste pentru prima dată în cadrul curent, cunoscută în limba engleză sub numele de **key press**. |
- Neapăsarea unei taste la cadrul curent, în situația în care tasta a fost apăsată la cadrul anterior, cunoscută în limba engleză sub numele de **key release**. | - Neapăsarea unei taste la cadrul curent, în situația în care tasta a fost apăsată la cadrul anterior, cunoscută în limba engleză sub numele de **key release**. | ||
- Apăsarea unei taste la cadrul curent, indiferent când a fost apasată prima dată, cunoscută în limba engleză sub numele de **key hold**. | - Apăsarea unei taste la cadrul curent, indiferent când a fost apasată prima dată, cunoscută în limba engleză sub numele de **key hold**. | ||
Line 76: | Line 76: | ||
</code> | </code> | ||
- | Metoda ''OnKeyPress'' se apelează pentru fiecare tastă apăsata într-un cadru. Trebuie verificat în interiorul metodei, pe baza parametrilor, ce tastă a fost apasată. Pentru mai multe informații despre fiecare metodă în parte, vă rog să citiți detaliile din [[https://github.com/UPB-Graphics/gfx-framework-ppbg/blob/master/src/core/window/input_controller.h | fișierul header al clasei InputController]]. | + | Metoda ''OnKeyPress'' se apelează pentru fiecare tastă apăsată într-un cadru. Trebuie verificat în interiorul metodei, pe baza parametrilor, ce tastă a fost apasată. Pentru mai multe informații despre fiecare metodă în parte, vă rog să citiți detaliile din [[https://github.com/UPB-Graphics/gfx-framework-ppbg/blob/master/src/core/window/input_controller.h | fișierul header al clasei InputController]]. |
<note tip> | <note tip> | ||
Line 113: | Line 113: | ||
===== API-ul grafic OpenGL ===== | ===== API-ul grafic OpenGL ===== | ||
- | O aplicație grafică în timp real utilizeaza procesorul grafic pentru a accelera desenarea unui cadru și a obține o frecvență mare de desenare a cadrelor. Deoarece procesoarele grafice prezintă diferențe mari unele față de celelalte, pentru a se evita implementarea desenării specific pentru fiecare tip de procesor grafic, au fost introduse mai multe standarde de programare a procesorului. Aceste standarde sunt implementate în interiorul driver-ului video. O privire de ansamblu a comunicării între o aplicație grafică în timp real și procesorul grafic este prezentată în imaginea de mai jos. Aceste standarde poartă numele de API-uri grafice și pentru a enumera doar cateva: OpenGL, Direct3D sau Metal. | + | O aplicație grafică în timp real utilizează procesorul grafic pentru a accelera desenarea unui cadru și a obține o frecvență mare de desenare a cadrelor. Deoarece procesoarele grafice prezintă diferențe mari unele față de celelalte, pentru a se evita implementarea desenării specific pentru fiecare tip de procesor grafic, au fost introduse mai multe standarde de programare a procesorului. Aceste standarde sunt implementate în interiorul driver-ului video. O privire de ansamblu a comunicării între o aplicație grafică în timp real și procesorul grafic este prezentată în imaginea de mai jos. Aceste standarde poartă numele de API-uri grafice și pentru a enumera doar cateva: OpenGL, Direct3D sau Metal. |
{{ :ppbg:laboratoare:graphicsapi.png?500 |}} | {{ :ppbg:laboratoare:graphicsapi.png?500 |}} | ||
Line 268: | Line 268: | ||
</note> | </note> | ||
- | - 0.05p - Completați metoda ''CreateMesh()'' astfel încât să încărcați geometria in memoria RAM a procesorului grafic. | + | - 0.05p - Completați metoda ''CreateMesh()'' astfel încât să încărcați geometria în memoria RAM a procesorului grafic. |
- | * Creați un VAO | + | * Creați un VAO; |
- | * Creați un VBO și adăugați date în el | + | * Creați un VBO și adăugați date în el; |
- | * Creați un IBO și adăugați date în el | + | * Creați un IBO și adăugați date în el; |
* După completarea corectă a metodei, rezultatul vizual ar trebui să fie următorul: {{ :ppbg:laboratoare:result1.png?600 |}} | * După completarea corectă a metodei, rezultatul vizual ar trebui să fie următorul: {{ :ppbg:laboratoare:result1.png?600 |}} | ||
- 0.05p - La apăsarea unei taste, alegeți o culoare aleatorie pentru curățarea grilei de pixeli. | - 0.05p - La apăsarea unei taste, alegeți o culoare aleatorie pentru curățarea grilei de pixeli. |