Differences

This shows you the differences between two versions of the page.

Link to this comparison view

egc:laboratoare:fr:01 [2019/10/02 22:54]
alexandru.gradinaru
egc:laboratoare:fr:01 [2019/10/03 06:46] (current)
alexandru.gradinaru
Line 42: Line 42:
     * Fonctionnalités qui seront utilisées à partir du premier laboratoire mais qui seront également implémentées par les étudiants au cours des laboratoires.     * Fonctionnalités qui seront utilisées à partir du premier laboratoire mais qui seront également implémentées par les étudiants au cours des laboratoires.
  
-==== Structura ​framework-ului ====+==== Structure du framework ====
  
   * **/libs**   * **/libs**
Line 109: Line 109:
         * Fiecare laborator va pleca de la baza oferită de SimpleScene         * Fiecare laborator va pleca de la baza oferită de SimpleScene
  
-==== Funcționarea unei aplicații grafice ​(OpenGL) ====+==== Les application graphique ​(OpenGL) ====
  
-Orice aplicație trebuie să asigure funcționalitatea pe o anumită perioadă de timpÎn funcție de cerințe această perioadă poate fi +Toute application doit garantir la fonctionnalité sur une certaine périodeEn fonction des besoins, cette période peut être
-  * **deterministă** - programul va executa un anumit task iar apoi se va închide ​(majoritatea programelor create in cadrul facultății până în acest moment respectă acest model+  * ** déterministe ​** - le programme exécutera une certaine tâche puis se terminera ​(la plupart des programmes créés au sein de la faculté respectent jusqu'​à présent ce modèle
-  * **continuă** - rulează unul sau mai multe task-uri în mod continuu ​(până in momentul în care utilizatorul sau un eveniment extern închide aplicația).+  * ** continu ** - exécute une ou plusieurs tâches de manière continue ​(jusqu'​à ce que l'​utilisateur ou un événement externe ferme l'​application).
  
-Aplicațiile grafice cu suport de vizualizare în timp real (de exemplu jocurilesau de exemplu ​ce vom face noi la EGC) se regăsesc în cel de-al doilea model și au la bază funcționarea pe baza unei bucle (loop) ​de procesare.\\  +Les applications graphiques prenant en charge la visualisation en temps réel (par exempleles jeux ou ce que nous ferons par exemple chez Infographie) se trouvent dans le second modèle et sont basées sur une boucle ​de traitement
-În cadrul ​framework-ului EGC acest loop constă într-o serie de pași (vezi ''​World::​LoopUpdate()''​):​ +Dans le framework, cette boucle consiste en une série d'​étapes ​(voir ''​ World::​LoopUpdate () ''​):​ 
-  - Se interoghează evenimentele ferestrei ​OpenGL (inputresize, etc.) +  - Les événements de la fenêtre ​OpenGL ​sont interrogés ​(entréeredimensionnement, etc.) 
-    * Evenimentele sunt salvate pentru a fi procesate mai tarziu +    * Les événements sont sauvegardés pour un traitement ultérieur 
-  - Se estimează timpul ​de execuție pentru iterația actuală ​(timpul ​de execuție al iterației precedente+  - Le temps d'​exécution ​de l'​itération en cours est estimé ​(le temps d'​exécution ​de l'​itération précédente
-  - Se procesează evenimentele salvate anterior +  - Les événements précédemment enregistrés sont traités 
-  - Se procesează frame-ul actual ​(este indicat să se ia în considerare timpul ​de execuție în cadrul modificărilor pentru a oferi actualizare independentă de timp+  - La trame actuelle est traitée ​(il est conseillé ​de prendre en compte le temps d'​exécution dans les modifications pour fournir une mise à jour inépendante du temps
-  - //Opțional//: În cazul double ​sau triple buffering se interschimbă bufferele ​de imagine +  - // Facultatif ​//: en cas de double ​ou de triple tamponnage, les tampons d'​image sont échangés 
-  - Se trece la următorul frame (se revine ​la primul pas)+  - Aller à l'​image suivante ​(revenir à la première étape)
  
 <​note>​ <​note>​
-Cel mai simplu model de aplicație ​OpenGL ​va trata evenimentele de input (mousetastaturăla momentul producerii lorAcest model nu este indicat deoarece are numeroase dezavantaje+Le modèle d'​application ​OpenGL ​le plus simple gérera les événements d'​entrée ​(sourisclavierau moment de leur productionCe modèle n'est pas indiqué car il présente de nombreux inconvénients
-  * nu oferă posibilitatea ​de a trata combinații ​de taste (Exempluutilizatorul apasa și pentru a deplasa caracterul in diagonală+  * n'​offre pas la possibilité ​de gérer des combinaisons ​de touches ​(Exemplel'​utilisateur appuie sur et pour déplacer le caractère en diagonale
-  * nu oferă informații ce țin de starea ​continuă a unui eveniment +  * ne fournit pas d'​informations concernant l'​état ​continu ​d'un événement 
-    * **Exemplu**: Un personaj dintr-un joc trebuie să se deplaseze în față atât timp cât utilizatorul ține apasată tasta **W**. +    * ** Exemple ​**: un personnage dans une partie doit avancer tant que l'​utilisateur appuie sur la touche ​** W **. 
-      Pentru a trata corespunzător o astfel ​de logică este necesar să menținem starea tastei ​**W** iar atunci când se face deplasarea caracteruluiaceasta să fie direct proporțională cu timpul trecut ​de la ultimul frame procesat +    Pour gérer correctement cette logique, il est nécessaire ​de conserver le statut de la touche ​** W **. Lorsque le caractère est déplacéil est directement proportionnel au temps écoulé depuis le dernier traitement ​de la trame. 
-      Același lucru se aplică și în cazul butoanelor ​de la mouse+    La même chose s'​applique aux boutons ​de la souris
  
-De asemenea, un model bazat pe buffering al evenimentelor ​de input oferă posibilitatea de a interoga starea input-ului în orice moment ​al unui frame, deci ofera și o flexibilitate generală mai mare pentru a implementa noi comportamente/logiciClasa ''​WindowObject'' ​asigură suportul pentru bufferingdar și pentru procesarea ulterioară a evenimentelor prin intermediul obiectelor ​de tipul ''​InputController''​.+En outre, un modèle ​de mise en mémoire tampon des événements d'​entrée permet d'​interroger le statut des entrées à tout moment ​d'une image. Il offre donc une plus grande flexibilité globale pour la mise en œuvre de nouveaux comportements ​logiquesLa classe ​''​ WindowObject '' ​prend en charge la mise en mémoire tamponmais également le traitement ultérieur d'​événements à travers des objets ​de type ''​ InputController ''​.
  
-Recomandăm să citiți documentația GLFW despre tratarea evenimentelor ​de input pentru a înțelege mai bine conceptele prezentate: http://​www.glfw.org/​docs/​latest/​input_guide.html+Nous vous recommandons ​de lire la documentation de GLFW sur la gestion des événements d'​entrée pour mieux comprendre les concepts présentés: http://​www.glfw.org/​docs/​latest/​input_guide.html
  
 </​note>​ </​note>​
  
 ===Multi-buffering=== ===Multi-buffering===
-În generalaplicațiile grafice folosesc mai multe buffere de imagini separate pentru a evita apariția artefactelor grafice prin modificarea directă a imaginii randate pe ecranAstfelimaginea afișată la momentul ​''​T''​ a fost procesată la momentul ​''​T-1''​, sau ''​T-2''​ (în funcție ​de dimensiunea bufferului).\\  +En généralles applications graphiques utilisent plusieurs tampons d'​image pour éviter l'​apparition d'​artefacts graphiques en modifiant directement l'​image affichée à l'​écranAinsil'​image affichée à l'​heure ​''​ T ''​ a été traitée à l'​heure ​''​ T-1 '' ​ou ''​ T-2 ''​ (en fonction ​de la taille du tampon). 
-Informații adiționale despre această tehnică multi-buffering pot fi obțiunute ​de pe wiki:+Des informations supplémentaires sur cette technique ​de mise en mémoire tampon multiple peuvent être obtenues à partir du wiki:
   * https://​en.wikipedia.org/​wiki/​Multiple_buffering   * https://​en.wikipedia.org/​wiki/​Multiple_buffering
   * https://​en.wikipedia.org/​wiki/​Multiple_buffering#​Double_buffering_in_computer_graphics   * https://​en.wikipedia.org/​wiki/​Multiple_buffering#​Double_buffering_in_computer_graphics
   * https://​en.wikipedia.org/​wiki/​Multiple_buffering#​Triple_buffering   * https://​en.wikipedia.org/​wiki/​Multiple_buffering#​Triple_buffering
  
-==== Modelul ​de funcționare al aplicației ​de laborator ​====+==== Le modèle ​de fonctionnement ​de l'​application de laboratoire ​====
  
-În cadrul unui laborator modelul aplicației grafice prezentat mai sus este implementat de către clasa ''​World''​.\\  +Dans lelaboratoire,​ le modèle d'​application graphique présenté ci-dessus est mis en oeuvre par la classe ​''​ World''​. 
-Pasul este tratat ​de către instanțele ​InputController ​în timp ce pasul este asigurat de funcțiile ​''​FrameStart()'',​ ''​Update(float deltaTime)''​, și ''​FrameEnd()'' ​moștenite ​de la clasa ''​World''​. ​Clasa ''​World'' ​extinde deja ''​InputController'' ​pentru a ușura munca în cadrul laboratorului.\\  +L'​étape ​est gérée par les instances ​de InputController, tandis que l'​étape ​est fournie par les variables ​''​ FrameStart () '',​ ''​ Update (float deltaTime) '' ​et ''​ FrameEnd () '' ​héritées ​de la classe ​''​ World ''​. ​La classe ​''​ World'' ​étend déjà ​''​ InputController '' ​pour faciliter le travail en laboratoire.\\ 
-Toate laboratoarele EGC vor fi implementate pe baza ''​SimpleScene''​ ce oferă următoarele facilități+Tous les laboratoires seront mis en œuvre sur la base de "SimpleScene" qui offre les fonctionnalités suivantes
-  * scena 3D cu randarea unui sistem cartezian ​de referință în coordonate ​OpenGL +  * Scène ​3D avec rendu d'un système ​de référence cartésien en coordonnées ​OpenGL 
-    * plan orizontal ​XOZ +    * plan horizontal ​XOZ 
-    * evidențierea spațiului pozitiv ​(OX, OY, OZ) +    * en soulignant l'​espace positif ​(OX, OY, OZ) 
-  * camera predefinită pentru explorarea scenei +  * la caméra prédéfinie pour l'​exploration de la scène 
-  * shadere predefinite pentru lucrul în primele laboratoare +  * shaders prédéfinis pour le travail dans les premiers laboratoires 
-  * management pentru stocarea shaderelor și modelelor nou createpe baza unui nume unic+  * gestion du stockage des shader et modèles nouvellement créésbasés sur un nom unique
  
-=== Etapele rulării aplicației ​===+=== Étapes de l'​exécution de l'​application ​===
  
-  - Se definesc proprietățile pentru fereastra ​de lucru (''​Main.cpp''​) +  - Les propriétés ​de la fenêtre de travail sont définies ​(''​Main.cpp''​) 
-  - Se inițializează Engine-ul astfel ​- ''​Engine::​Init()''​ +  - Le moteur est donc initialisé ​- ''​Engine::​Init()''​ 
-    - Se inițializează ​API-ul OpenGL (''​glfwInit()''​) +    - L'API OpenGL ​est initialisée ​(''​glfwInit()''​) 
-    - Se creează fereastra ​de lucru cu un context ​OpenGL 3.3+ +    - La fenêtre ​de travail est créée avec un contexte ​OpenGL 3.3+ 
-      - Se atașează evenimentele ​de fereastră prin intermediul ​__WindowsCallbacks.cpp__ +      - Attacher des événements ​de fenêtre via __WindowsCallbacks.cpp__ 
-    - Se inițializează managerul ​de texturi +    - Le gestionnaire ​de texture est initialisé 
-  - Se creează și inițializează o nouă scenă 3D de lucru având ​la bază modelul ​de update prezentat anterior ​(__Main.cpp__) +  - Une nouvelle scène ​de travail 3D est créée et initialisée sur la base du modèle ​de mise à jour présenté ci-dessus. ​(__Main.cpp__) 
-  - Se pornește rularea scenei încărcate ​(''​LoopUpdate()''​)+  - La scène chargée commence à courir ​(''​LoopUpdate()''​)
  
    
-==== Standardul ​OpenGL ====+==== Le standard ​OpenGL ====
  
-OpenGL ​este un standard (API) pe care îl putem folosi pentru a crea aplicații grafice real-timeEste aproape identic cu Direct3D, ​ambele având o influență reciprocă de-a lungul anilor+OpenGL ​est un standard (API) que nous pouvons utiliser pour créer des applications graphiques en temps réelIl est presque identique à Direct3D, ​qui ont tous deux une influence mutuelle au fil des ans
-  * Mai multe informații despre istoricul ​OpenGL ​se pot găsi la adresa: https://​en.wikipedia.org/​wiki/​OpenGL +  * Plus d’informations sur l’histoire ​OpenGL ​sont disponibles sur: https://​en.wikipedia.org/​wiki/​OpenGL 
-  * Explicații complete prinvind ​API-ul OpenGL ​cât și utilizarea acestuia se pot găsi pe pagina oficială a standardului: https://​www.opengl.org/​sdk/​docs/​man/​ +  * Vous trouverez des explications complètes sur l’API OpenGL ​et son utilisation sur la page standard de la norme: https://​www.opengl.org/​sdk/​docs/​man/​ 
-<note tip>Atunci când nu sunteți siguri ce face o anumită comandă sau ce reprezintă paramaterii funcțiilor este recomandat să consultați documentația: https://​www.opengl.org/​sdk/​docs/​man/​+<note tip>Si vous ne savez pas quoi faire pour une commande particulière ou quels sont les paramètres de la fonction, il est conseillé de consulter la documentation: https://​www.opengl.org/​sdk/​docs/​man/​
 </​note>​ </​note>​
-Versiunea curentă a acestui standard este 4.6. Pentru cursul de EGC vom folosi standardul ​3.0/​3.3, ​care este în același timp și versiunea actuală pentru varianta pentru ​mobile ​OpenGL, ​numită ​OpenGL ES https://en.wikipedia.org/​wiki/​OpenGL_ES.\\  +La version actuelle de cette norme est la 4.6. Pour le cours EGC, nous utiliserons la norme 3.0 / 3.3, qui est en même temps la version actuelle de la version ​mobile ​d’OpenGL, ​appelée ​OpenGL ES https://fr.wikipedia.org/​wiki/​OpenGL_ES.
-\\  +
-Începând cu 2016 a fost lansat și API-ul Vulkan ce oferă access avansat low-level la capababilitățile grafice moderne ale procesoarelor grafice. Standardul Vulkan este orientat dezvoltării aplicațiilor de înaltă performanță iar complexitatea acestuia depășește cu mult aspectele de bază ce vor fi prezentate în cadrul cusului/​laboratorului. ​  +
  
-=== Utilizarea ​API ===+Depuis 2016, l'API Vulkan a été lancée. Elle offre un accès bas niveau avancé aux capacités graphiques modernes des processeurs graphiques. La norme Vulkan est orientée vers le développement d’applications hautes performances et sa complexité dépasse de loin les aspects fondamentaux qui seront présentés dans les points suivants: laboratoire / point de rebroussement.
  
-Pe parcursul laboratoarelor (dar și a cursului) se va trece prin toate etapele importante ce stau la baza redării grafice. Astfel vor fi învățate concepte precum: +=== Utiliser l'API ===
-  * încărcare și randare de obiecte 3D simple +
-  * funcționarea pipeline-ului grafic +
-  * vizualizare,​ proiecție, control camera +
-  * utilizare shadere (vertex și fragment shader) +
-  * iluminare +
-  * texturare+
  
-==== Cerințe generale ​de laborator ====+Pendant les travaux pratiques (mais également pendant le cours), vous passerez par toutes les étapes importantes qui sont à la base du rendu graphique. Cela enseignera des concepts tels que: 
 +  * chargement et rendu d'​objets 3D simples 
 +  * opération ​de pipeline graphique 
 +  * visualisation,​ projection, contrôle de la caméra 
 +  * utiliser des shaders (vertex et fragment shader) 
 +  * éclairage 
 +  * texture
  
-  * Citiți cu foarte mare atenție Framwork-ul de laborator întrucât îl veți utiliza pe tot parcursul laboratorului ​de EGC inclusiv și la temele de casă +==== Conditions générales ​de laboratoire ==== 
-  * Citiți comentariile din cod – ar trebui să răspundă la majoritatea întrebărilor pe care le aveți + 
-  * Citiți documentația de la [[ https://​github.com/​UPB-Graphics/​Framework-EGC/​blob/​master/​Source/​Core/​Window/​InputController.h | __InputController.h__]] ​întrucât veți utiliza constant funcțiile din cadrul acestei clase (prin suprascrierepentru definirea de interacțiuni și comportament personalizat +  * Lisez très attentivement le cadre du laboratoire,​ car vous l'​utiliserez tout au long du laboratoire ​EGC, y compris les devoirs. 
-  * Dacă nu ințelegeți modelul ​de funcționare al aplicației rugați asistentul să explice încă o dată cum funcționează toată aplicația+  * Lisez les commentaires dans le code - il devrait répondre à la plupart des questions que vous avez. 
 +  * Lisez la documentation sur [[https://​github.com/​UPB-Graphics/​Framework-EGC/​blob/​master/​Source/​Core/​Window/​InputController.h | __InputController.h__]] ​car vous utiliserez constamment les fonctions de cette classe ​(écrasementpour définir des interactions et un comportement personnalisé 
 +  * Si vous ne comprenez pas le modèle d'​exploitation ​de l'​application,​ demandez à l'​assistant d'​expliquer à nouveau comment fonctionne l'​application dans son ensemble.
  
 == C++ == == C++ ==
  
-Framework-ul este scris în limbajul ​C++, ce va fi utilizat pe tot parcursul laboratoarelor+Le framework est écrit en C ++, et sera utilisé dans tous les laboratoires
-Conceptele utilizate în cadrul laboratorului și care trebuie știute sunt+Les concepts utilisés en laboratoire et qui doivent être connus sont
-  * concepte ​de bază de OOP obiectemoșteniremetode virtuale, etc +  * concepts ​de base de la POO objetshéritageméthodes virtuelles, etc. 
-  * utilizarea ​standard ​librariesîn special ​[[http://​www.cplusplus.com/​reference/​vector/​vector/​ | std::​vector]],​ [[ http://​www.cplusplus.com/​reference/​list/​list/​ | std::list ]] și [[ http://​www.cplusplus.com/​reference/​unordered_map/​unordered_map/​ | std::​unorderd_map ]]+  * utiliser des bibliothèques ​standard: ​en particulier ​[[http://​www.cplusplus.com/​reference/​vector/​vector/​ | std::​vector]],​ [[ http://​www.cplusplus.com/​reference/​list/​list/​ | std::list ]] et [[ http://​www.cplusplus.com/​reference/​unordered_map/​unordered_map/​ | std::​unorderd_map ]]
    
 <note tip> <note tip>
-Pentru cei mai puțin familiarizați cu limbajul ​C++ recomandăm să parcurgeți tutoriale: [[http://​www.learncpp.com/​ | Learn C++ ]]+Pour ceux qui sont moins familiers avec C ++, nous vous recommandons de suivre des tutoriels: [[http://​www.learncpp.com/​ | Learn C++ ]]
 </​note>​ </​note>​
  
 == Visual Studio 2017 == == Visual Studio 2017 ==
-  * În cadrul laboratorului vom utiliza ​[[https://​visualstudio.microsoft.com/​vs/​older-downloads/​|Visual Studio 2017 Community Edition]] ​sau la alegere ​[[https://​www.visualstudio.com/​vs/​community/​|Visual Studio 2019 Community Edition]] (prin conversie ​de proiect+  * En laboratoire,​ nous utiliserons ​[[https://​visualstudio.microsoft.com/​vs/​older-downloads/​|Visual Studio 2017 Community Edition]] ​ou à votre choix [[https://​www.visualstudio.com/​vs/​community/​|Visual Studio 2019 Community Edition]] (par conversion ​de projet
-  * Installer-ul ​de Visual Studio ​vine cu posibilitatea ​de a instala modular doar ceea ce este necesarPentru acest laborator trebuie instalat doar modulul default ​**Desktop development with C++**, ​care se regăsește în **Workloads** +  * Le programme d’installation ​de Visual Studio ​offre la possibilité d’installer ​de manière modulaire uniquement les éléments requisPour cet atelier uniquement le module par défaut ​** Développement de bureau avec C ++ **, disponible dans ** Workloads ** 
-  * Framework-ul conține deja un proiect preconfigurat pentru ​Visual Studio 2017 __Framework_EGC.sln__ (folderul ​[[https://​github.com/​UPB-Graphics/​Framework-EGC/​tree/​master/​Visual%20Studio| /Visual Studio]]) +  * Le framework contient déjà ​un projet préconfiguré pour Visual Studio 2017 __Framework_EGC.sln__ (dossier[[https://​github.com/​UPB-Graphics/​Framework-EGC/​tree/​master/​Visual%20Studio| /Visual Studio]]) 
-  * Deschideți soluția în Visual Studio 2017+  * Ouvrez la solution dans Visual Studio 2017
  
 <note tip> <note tip>
-Cei care nu au mai utilizat IDE-ul ​**Visual Studio** ​pentru scrierea de aplicații ​C++ sunt rugați să citească toturialul ​[[https://​msdn.microsoft.com/​en-us/​library/​jj620919.aspx#​BKMK_CreateApp | Getting Started with C++ in Visual Studio]]+Ceux qui n’ont pas utilisé ​**Visual Studio** ​pour écrire des applications ​C ++ sont invités à lire le fichier Toturial ​[[https://​msdn.microsoft.com/​en-us/​library/​jj620919.aspx#​BKMK_CreateApp | Getting Started with C++ in Visual Studio]]
 </​note>​ </​note>​
  
Line 222: Line 222:
 ==== GLM ==== ==== GLM ====
  
-În graficămatematica este folosită peste tot, de la simple matrici pentru rotații până la integrale infinit dimensionale pentru algoritmii folosiți în industria filmului, de aceea ne dorim să avem un suport de matematică robustbine documentat și nu în ultimul rând cât  mai apropiat ​de formatul ​OpenGL. ​În loc să scriem noi o librărie de matematică vom folosi librăria ​GLM. GLM ne oferă rotațiitranslațiivectori ​de dimensiune ​2/​3/​4, ​matrici și multe alte funcționalități avansate ​(e.g. modele ​de zgomot). Vom folosi doar cele mai simple funcționalități în laboratoarele ​de la această materie+Dans les graphiquesles mathématiques sont utilisées partoutdes simples matrices ​de rotation aux intégrales infiniment dimensionnelles des algorithmes utilisés dans l'​industrie cinématographique. C'est pourquoi nous souhaitons disposer d'un support mathématique robustebien documenté et aussi proche ​de Format ​OpenGL. ​Au lieu d'​écrire une bibliothèque mathématique,​ nous utiliserons la bibliothèque ​GLM. GLM nous fournit des rotationsdes translationsdes vecteurs ​de taille ​2/​3/​4, ​des matrices et de nombreuses autres fonctionnalités avancées ​(par exemple, des modèles ​de bruit). Nous n'​utiliserons que les fonctionnalités les plus simples dans les laboratoires ​de ce sujet.
  
 <code cpp> <code cpp>
Line 237: Line 237:
  
  
-==== Laboratorul ​1 ====+==== Laboratoire ​1 ====
  
 === Framework === === Framework ===
  
-Framework-ul ​de laborator se găsește pe [[https://​github.com/​UPB-Graphics/​Framework-EGC | Github]] \\  +Le cadre de laboratoire peut être trouvé sur [[https://​github.com/​UPB-Graphics/​Framework-EGC | Github]] \\  
-Puteți să descărcați direct arhiva accesând ​[[https://​github.com/​UPB-Graphics/​Framework-EGC/​archive/​master.zip | acest link ]]+ 
 +Vous pouvez télécharger l'​archive directement en y accédant ​[[https://​github.com/​UPB-Graphics/​Framework-EGC/​archive/​master.zip | ce lien ]]
  
  
-=== Informații laborator ​===+=== Informations de laboratoire ​===
  
-<note important> ​Sursele ce stau la baza fiecărui laborator se află în directorul: __/​Source/​Laboratoare/​Laborator**N**/​__,​ **N** reprezentând numărul laboratorului.+<note important> ​Les sources sous-jacentes à chaque laboratoire figurent dans le dossier: __/​Source/​Laboratoare/​Laborator**N**/​__,​ **N** représentant le numéro de laboratoire.
 </​note>​ </​note>​
  
-În cadrul laboratorului ​puteți încărca modele ​3D în cadrul scenei și cere afișarea scenei utilizând funcția+Dans le laboratoire ​1, vous pouvez télécharger des modèles ​3D sur la scène et demander l’affichage de la scène à l’aide de la fonction
 <code cpp> <code cpp>
 RenderMesh(Mesh * mesh, glm::vec3 position, glm::vec3 scale) RenderMesh(Mesh * mesh, glm::vec3 position, glm::vec3 scale)
 </​code>​ </​code>​
  
-Culorile pixelilor prin care se reprezintă scena sunt salvate într-un buffer, numit Framebuffer. ​Contextul definit oferă automat ​un astfel de buffer și este configurat să ruleze cu double-buffering+Les couleurs de pixel par lesquelles la scène est représentée sont stockées dans une mémoire tampon appelée ​Framebuffer. ​Le contexte défini fournit automatiquement ​un tel tampon et est configuré pour fonctionner avec une double ​mise en mémoire tampon.
  
-API-ul OpenGL ​utilizat în cadrul laboratorului:+L'API OpenGL ​utilisée dans le laboratoire:
 <code cpp> <code cpp>
-// defineste ​un spatiu ​de desenare in spatiul ferestrei ​de vizualizare +// définit ​un espace ​de dessin dans l'​espace ​de la fenêtre 
-// x, y reprezinta coordonatele coltului stanga jos +// x, y représente les coordonnées du coin inférieur gauche 
-// width, height ​reprezinta dimensiunea spatiului ​de desenare.+// width, height ​représente la taille ​de l'​espace de dessin.
 void glViewport(GLint x,  GLint y,  GLsizei width, ​ GLsizei height); ​ void glViewport(GLint x,  GLint y,  GLsizei width, ​ GLsizei height); ​
  
-// seteaza culoarea cu care va fi colorat tot ecranul ​la operatia ​de clear+// Définit ​la couleur avec laquelle tout l'​écran sera coloré lors de l'​effacement
 void glClearColor(float r, float g, float b, float a); void glClearColor(float r, float g, float b, float a);
  
- // ​implementeaza operatia de clear+ // ​met en œuvre l'​opération d'​effacement
 void glClear(GL_COLOR_BUFFER_BIT);​ void glClear(GL_COLOR_BUFFER_BIT);​
 </​code>​ </​code>​
  
 <note important>​ <note important>​
-Culorile în OpenGL ​sunt specificate ca float în intervalul ​0 - 1+Les couleurs dans OpenGL ​sont spécifiées en tant que float dans la plage 0 - 1
  
-Bufferul ​de culoare utilizat ​(atât în cadrul laboratorului dar și în mod uzual datorită limitărilor impuse ​de afișarea pe monitoreeste în format RGBA32. ​Fiecare componentă ​(redgreenblue, alpha) ​ocupă ​bițideci intervalul ​– 255. Astfel: \\  +Le tampon ​de couleur utilisé ​(à la fois dans le laboratoire et généralement en raison ​de limitations imposées par l'​affichage sur le moniteurest au format RGBA32. ​Chaque composant ​(rougevertbleu, alpha) ​occupe ​bitsdonc la plage 255. Ainsi: \\  
-  * roșu (255, 0, 0) este reprezentată ca (1, 0, 0) pe procesorul grafic\\  +  * le rouge (255, 0, 0) est représenté par (1, 0, 0) sur le processeur graphique\\  
-  * galben este (1, 1, 0) și tot așa+  * le jaune est (1, 1, 0) et ainsi de suite
  
 </​note>​ </​note>​
  
-== Control aplicație ​==+== Contrôle d'​application ​==
  
-Programul rulat oferă posibilitatea vizualizării scenei create prin intermediul unei camere predefinite.+Le programme en cours offre la possibilité de visualiser la scène créée par une caméra prédéfinie.
  
 <note tip> <note tip>
-Taste de control pentru cameră +Touches ​de contrôle pour la caméra 
-  * **W, A, S, D, Q, E** - deplasare fațăstângaspatedreaptajossus +  * **W, A, S, D, Q, E** - avantgauchearrièredroitebashaut 
-  * **MOUSE RIGHT + MOUSE MOVE** - rotație cameră+  * **MOUSE RIGHT + MOUSE MOVE** - roatation de caméra
 </​note>​ </​note>​
  
  
-=== Cerințe laborator ​===+=== Exigences de laboratoire ​===
  
-  - Descărcați ​framework-ulcompilați și rulați proiectul +  - Téléchargez le framework, ​compilez et exécutez le projet 
-    * Trebuie să deschideți proiectul ​Framework_EGC.sln (folderul ​__/Visual Studio__) ​în Visual Studio ​2017 +    * Vous devez ouvrir le projet ​Framework_EGC.sln (dossier ​__/Visual Studio__) ​avec Visual Studio ​IDE 
-  - Încărcați ​un alt model 3D și randați-l în scenă la o poziție diferită față ​de cele 2 cuburi +  - Téléchargez ​un autre modèle ​3D et affichez-le dans une position différente ​de celle des deux cubes. 
-    * __/​Resources/​Models__ ​conține o serie de modele ​3D ce pot fi încărcate +    * __/​Resources/​Models__ ​contient un certain nombre ​de modèles ​3D pouvant être téléchargés 
-    * În ''​Laborator1::​Init()'' ​găsiți modul în care puteți să declarați ​(și încărcați) un nou obiect ​de tip ''​Mesh''​ +    * Dans ''​Laborator1::​Init()'' ​découvrez comment vous pouvez déclarer ​(et télécharger) un nouvel objet de type ''​Mesh''​ 
-  - La apăsarea unei taste să se schimbe culoarea ​de ștergere a ecranului +  - Appuyer sur une touche change la couleur ​de la gomme à l'​écran 
-  - La apăsarea unei taste să se schimbe obiectul afisat ​(renderla o poziție ​(să cicleze prin obiectede ex cube, teapot, sphere) +  - Lorsque vous appuyez sur une touche, modifiez l'​objet affiché ​(renduen une position ​(pour parcourir ​objetspar exemple un cube, une théière, une sphère - cube, teapot, sphere) 
-  - Să se miște prin spațiu ​un obiect oarecare la apăsarea tastelor ​W, A, S, D, EQ (pozitiv și negativ pe toate cele axe)+  - Pour déplacer ​un objet dans l'​espace en appuyant sur les touches ​W, A, S, D, E et Q (positif et négatif sur les axes)
  
  
-<note important>​Citiți cu atenție documentația evenimentelor de input din fișierul ​''​[[https://​github.com/​UPB-Graphics/​Framework-EGC/​blob/​master/​Source/​Core/​Window/​InputController.h | InputController.h]]'' ​întrucât le veți utiliza în cadrul fiecărui laborator</​note>​+<note important>​Veuillez lire attentivement la documentation des événements saisis dans le fichier ​''​[[https://​github.com/​UPB-Graphics/​Framework-EGC/​blob/​master/​Source/​Core/​Window/​InputController.h | InputController.h]]'' ​comme vous les utiliserez dans chaque laboratoire</​note>​
  
  
egc/laboratoare/fr/01.1570046045.txt.gz · Last modified: 2019/10/02 22:54 by alexandru.gradinaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0