This shows you the differences between two versions of the page.
egc:laboratoare:fr:02 [2019/10/09 17:42] alexandru.gradinaru |
egc:laboratoare:fr:02 [2019/10/10 05:09] (current) alexandru.gradinaru [Vertex Buffer Object (VBO)] |
||
---|---|---|---|
Line 88: | Line 88: | ||
==== Vertex Buffer Object (VBO) ==== | ==== Vertex Buffer Object (VBO) ==== | ||
- | Un vertex buffer object (objet tampon de sommet) représente un conteneur dans lequel nous stockons des données liées au contenu des astuces, telles que: | + | Un vertex buffer object (objet tampon de sommet) représente un conteneur dans lequel nous stockons des données liées au contenu des sommets, telles que: |
* position | * position | ||
* normal | * normal | ||
Line 170: | Line 170: | ||
Avant la commande de dessin, il suffit de lier uniquement le VAO pour qu'OpenGL connaisse toutes les liaisons créées lors de la construction de l'objet. | Avant la commande de dessin, il suffit de lier uniquement le VAO pour qu'OpenGL connaisse toutes les liaisons créées lors de la construction de l'objet. | ||
- | ===== Laborator 2 ===== | + | ===== Laboratoire 2 ===== |
- | ==== Descriere laborator ==== | + | ==== Description du laboratoire ==== |
- | În cadrul laboratorului vom învăța să folosim **VAO, VBO, IBO** și astfel să generăm și încărcăm geometrie simplă.\\ | + | En laboratoire, nous allons apprendre à utiliser **VAO, VBO, IBO** et ainsi nous générons et chargeons une géométrie simple.\\ |
- | Laboratorul pune la dispoziție structura [[https://github.com/UPB-Graphics/Framework-EGC/blob/master/Source/Core/GPU/Mesh.h#L14|VertexFormat]] ce va fi utilizată ca bază pentru a crea geometria. | + | Le laboratoire fournit la structure [[https://github.com/UPB-Graphics/Framework-EGC/blob/master/Source/Core/GPU/Mesh.h#L14|VertexFormat]] qui servira de base à la création de la géométrie. |
<code cpp> | <code cpp> | ||
Line 195: | Line 195: | ||
</code> | </code> | ||
- | Clasa ''Mesh'' pune la dispoziție posibilitatea de a încărca geometrie simplă folosind diverse metode: | + | La classe ''Mesh'' offre la possibilité de télécharger une géométrie simple en utilisant diverses méthodes: |
<code cpp> | <code cpp> | ||
- | // Initializes the mesh object using a VAO GPU buffer that contains the specified number of indices | + | // Initialise l'objet maillé à l'aide d'un tampon VAO GPU contenant le nombre spécifié d'index. |
bool InitFromBuffer(unsigned int VAO, unsigned short nrIndices); | bool InitFromBuffer(unsigned int VAO, unsigned short nrIndices); | ||
- | // Initializes the mesh object and upload data to GPU using the provided data buffers | + | // Initialise l'objet maillé et télécharge les données sur les GPU à l'aide des tampons de données fournis. |
bool InitFromData(std::vector<VertexFormat> vertices, | bool InitFromData(std::vector<VertexFormat> vertices, | ||
std::vector<unsigned short>& indices); | std::vector<unsigned short>& indices); | ||
- | // Initializes the mesh object and upload data to GPU using the provided data buffers | + | // Initialise l'objet maillé et télécharge les données sur les GPU à l'aide des tampons de données fournis. |
bool InitFromData(std::vector<glm::vec3>& positions, | bool InitFromData(std::vector<glm::vec3>& positions, | ||
std::vector<glm::vec3>& normals, | std::vector<glm::vec3>& normals, | ||
Line 211: | Line 211: | ||
</code> | </code> | ||
<note tip> | <note tip> | ||
- | Taste de control pentru cameră | + | Touches de contrôle pour la camerá |
- | * **W, A, S, D, Q, E** - deplasare față, stânga, spate, dreapta, jos, sus | + | * **W, A, S, D, Q, E** - avant, gauche, arrière, droite, bas, haut |
- | * **MOUSE RIGHT + MOUSE MOVE** - rotație cameră | + | * **MOUSE RIGHT + MOUSE MOVE** - rotation de la camerá |
- | **F3** - afișează/ascunde gridul din scenă \\ | + | **F3** - affiche / masque la grille dans la scène \\ |
- | **Space** - desenează primitivele doar prin **puncte** sau **linii** (wireframe) sau **geometrie opacă** | + | **Space** - dessiner des primitives uniquement par **points** ou **lignes** (wireframe) ou **géométrie opaque** |
</note> | </note> | ||
- | ==== Cerințe laborator ==== | + | ==== Tâches de laboratoire ==== |
<note important> | <note important> | ||
- | Toate cerințele ce țin de încărcare de geometrie trebuie rezolvate prin intermediul funcției ''Laborator2::CreateMesh'' dar puteți folosi metodele ''Mesh::InitFromData()'' pentru a verifica validitatea geometriei. | + | Toutes les tâches de chargement de géométrie doivent être résolues par la fonction ''Laborator2::CreateMesh'' mais vous pouvez utiliser les méthodes ''Mesh::InitFromData()'' pour vérifier la validité de la géométrie. |
</note> | </note> | ||
- | - Descărcați [[https://github.com/UPB-Graphics/Framework-EGC/archive/master.zip|framework-ul de laborator]] | + | - Télécharger [[https://github.com/UPB-Graphics/Framework-EGC/archive/master.zip|le cadre de laboratoire]] |
- | - Completați geometria și topologia unui cub: vectorii de vertecși și indecși din inițializare. ''VertexFormat'' este o structură pentru vertex cu 2 parametrii (poziție, culoare). | + | - Complétez la géométrie et la topologie d'un cube: les sommets et les vecteurs d'index de l'initialisation. ''VertexFormat'' est une structure de sommet avec 2 paramètres (position, couleur). |
- | - Completați funcția ''Laborator2::CreateMesh'' astfel încât să încărcați geometria pe GPU | + | - Compléter la fonction ''Laborator2::CreateMesh'' afin que vous puissiez charger la géométrie sur le GPU |
- | * creați un VAO | + | * créer un VAO |
- | * creați un VBO și adăugați date în el | + | * créer un VBO et y ajouter des données |
- | * creați un IBO și adăugați date în el | + | * créer un IBO et y ajouter des données |
- | * afișați noul obiect (RenderMesh[cube3]) astfel încât să nu se suprapună cu un alt obiect | + | * afficher le nouvel objet (RenderMesh[cube3]) afin qu'il ne chevauche pas un autre objet |
- | - Creați o nouă formă geometrică simplă, de exemplu un tetraedru și desenați-l în scenă | + | - Créez une nouvelle forme géométrique simple, telle qu'un tétraèdre, et dessinez-la dans la scène. |
- | - Atunci când se apasă tasta **F2** faceți toggle între modul de culling **GL_BACK** și **GL_FRONT** | + | - Lorsque la touche **F2** est enfoncée basculer entre le mode de sélection **GL_BACK** et **GL_FRONT** |
- | * nu uitați să activați și să dezactivați face culling folosind ''glEnable()'' / ''glDisable()'' | + | * n'oubliez pas d'activer et de désactiver l'utilisation de la sélection ''glEnable()'' / ''glDisable()'' |
- | - Creați un pătrat format din 2 triunghiuri astfel încât fiecare triunghi să fie vizibil doar dintr-o parte | + | - Créez un carré composé de 2 triangles de manière à ce que chaque triangle ne soit visible que d'un côté |
- | * în orice moment de timp nu trebuie să se vadă decât 1 triunghi | + | * A tout moment, il ne faut voir qu'un seul triangle |
<hidden> | <hidden> |