This shows you the differences between two versions of the page.
egc:laboratoare:01 [2021/10/12 13:02] chris.luntraru [Cerințe generale de laborator] Typo |
egc:laboratoare:01 [2024/10/06 15:43] (current) silviu.stancioiu00 [Laboratorul 1] |
||
---|---|---|---|
Line 219: | Line 219: | ||
</note> | </note> | ||
- | == Generare si compilare == | + | == Generare și compilare == |
- | * Pentru generarea solutiilor compilabile pentru platformele suportate, framework-ul foloseste [[https://github.com/Kitware/CMake/|CMake]] | + | * Pentru generarea soluțiilor compilabile pentru platformele suportate, framework-ul folosește [[https://github.com/Kitware/CMake/|CMake]] |
- | * Platformele suportate in acest moment de framework sunt | + | * Platformele suportate în acest moment de framework sunt: |
* Windows (stabil) | * Windows (stabil) | ||
* Linux (experimental) | * Linux (experimental) | ||
* macOS (experimental) | * macOS (experimental) | ||
- | * Pentru generarea solutiei pentru platforma dorita, urmati pasii de instalare si generare descrisi la [[https://github.com/UPB-Graphics/gfx-framework|GFX Framework]] | + | * Pentru generarea soluției pentru platforma dorită, urmați pașii de instalare și generare descriși la [[https://github.com/UPB-Graphics/gfx-framework|GFX Framework]] |
- | == Visual Studio 2019 == | + | == Visual Studio 2022 == |
- | * În cadrul laboratorului vom utiliza [[https://www.visualstudio.com/vs/community/|Visual Studio 2019 Community Edition]] | + | * În cadrul laboratorului vom utiliza [[https://www.visualstudio.com/vs/community/|Visual Studio 2022 Community Edition]] |
* Installer-ul de Visual Studio vine cu posibilitatea de a instala modular doar ceea ce este necesar. Pentru acest laborator trebuie instalat doar modulul default **Desktop development with C++**, care se regăsește în **Workloads** | * Installer-ul de Visual Studio vine cu posibilitatea de a instala modular doar ceea ce este necesar. Pentru acest laborator trebuie instalat doar modulul default **Desktop development with C++**, care se regăsește în **Workloads** | ||
- | * Dupa generarea cu CMake, framework-ul va conține in folderul de **/build** un proiect pentru Visual Studio: __GFXFramework.sln__ | + | * După generarea cu CMake, framework-ul va conține in folderul de **/build** un proiect pentru Visual Studio: __GFXFramework.sln__ |
* Deschideți soluția în Visual Studio | * Deschideți soluția în Visual Studio | ||
Line 238: | Line 238: | ||
<note tip> | <note tip> | ||
- | Cei care doresc sa foloseasca **Linux** sau **macOS** pot face acest lucru, insa **atentie**, suportul in acest moment este experimental (au fost testate functionalitatile de baza pe unele din cele mai folosite distributii) si pot aparea diverse bug-uri in functie de implementarea de pe aceste platforme. | + | Cei care doresc sa folosească **Linux** sau **macOS** pot face acest lucru, însă **atenție**, suportul în acest moment este experimental (au fost testate funcționalitățile de bază pe unele din cele mai folosite distribuții) și pot apărea diverse bug-uri în funcție de implementarea de pe aceste platforme. |
</note> | </note> | ||
Line 290: | Line 290: | ||
// implementeaza operatia de clear | // implementeaza operatia de clear | ||
- | void glClear(GL_COLOR_BUFFER_BIT); | + | void glClear(GLbitfield mask); |
</code> | </code> | ||
Line 316: | Line 316: | ||
- Descărcați framework-ul, compilați și rulați proiectul | - Descărcați framework-ul, compilați și rulați proiectul | ||
- | * Trebuie să deschideți proiectul GFXFramework.sln (din folderul de __/build__) în Visual Studio 2019 | + | * Trebuie să deschideți proiectul GFXFramework.sln (din folderul de __/build__) în Visual Studio 2022 |
- Încărcați un alt model 3D și randați-l în scenă la o poziție diferită față de cele 2 cuburi | - Încărcați un alt model 3D și randați-l în scenă la o poziție diferită față de cele 2 cuburi | ||
* __/assets/models__ conține o serie de modele 3D ce pot fi încărcate | * __/assets/models__ conține o serie de modele 3D ce pot fi încărcate | ||
* În ''Lab1::Init()'' găsiți modul în care puteți să declarați (și încărcați) un nou obiect de tip ''Mesh'' | * În ''Lab1::Init()'' găsiți modul în care puteți să declarați (și încărcați) un nou obiect de tip ''Mesh'' | ||
- La apăsarea unei taste să se schimbe culoarea de ștergere a ecranului | - La apăsarea unei taste să se schimbe culoarea de ștergere a ecranului | ||
- | - La apăsarea unei taste să se schimbe obiectul afisat (render) la o poziție (să cicleze prin 3 obiecte, de ex cube, teapot, sphere) | + | - La apăsarea unei taste să se schimbe forma/mesh-ul unuia dintre obiectele afisate (render) astfel incat să se cicleze prin 3 obiecte (de ex cube, teapot, sphere) |
- Să se miște prin spațiu un obiect oarecare la apăsarea tastelor W, A, S, D, E, Q (pozitiv și negativ pe toate cele 3 axe) | - Să se miște prin spațiu un obiect oarecare la apăsarea tastelor W, A, S, D, E, Q (pozitiv și negativ pe toate cele 3 axe) | ||
Line 329: | Line 329: | ||
<hidden> | <hidden> | ||
+ | Cerinte alternative: | ||
+ | * 3.1 La apăsarea unei taste să se faca toggle intre utilizarea apelului glClear si neutilizarea lui, sa vada rezultatul care apare cand nu se sterge ecranul. | ||
+ | * 3.2 La apasarea a 3 taste diferite sa schimbe culoarea de ștergere a ecranului. Fiecare tasta schimba explicit o anumita culoare: tasta 1 -> rosu, tasta 2 -> galbel si tasta 3 -> cyan. In felul acesta se obisnuiesc putin si cu modelul de culoare. | ||
+ | * 4.1 Unul dintre cele 3 forme prin care se cicleaza sa fie format din doua modele 3d, de exemplu teapot care sta pe box. | ||
+ | * 5.1 Sa se aplice deplasarea pe obiectul prin care se cicleaza | ||
+ | * 5.2 Suplimentar, la apasarea tastelor Z si X sa se schimbe scara obiectului, continuu, cu window->KeyHold(). | ||
+ | |||
Bonusuri posibile: | Bonusuri posibile: | ||
* Rotația continuă a unui obiect în jurul unui punct, cu o anumită rază. | * Rotația continuă a unui obiect în jurul unui punct, cu o anumită rază. |