This shows you the differences between two versions of the page.
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ériode. En 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 jocurile, sau 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 exemple, les 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 (input, resize, etc.) | + | - Les événements de la fenêtre OpenGL sont interrogés (entrée, redimensionnement, 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 (mouse, tastatură) la momentul producerii lor. Acest 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 (souris, clavier) au moment de leur production. Ce modèle n'est pas indiqué car il présente de nombreux inconvénients: |
- | * nu oferă posibilitatea de a trata combinații de taste (Exemplu: utilizatorul apasa W și A pentru a deplasa caracterul in diagonală) | + | * n'offre pas la possibilité de gérer des combinaisons de touches (Exemple: l'utilisateur appuie sur W et A 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 caracterului, aceasta 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/logici. Clasa ''WindowObject'' asigură suportul pentru buffering, dar ș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 / logiques. La classe '' WindowObject '' prend en charge la mise en mémoire tampon, mais é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 general, aplicațiile grafice folosesc mai multe buffere de imagini separate pentru a evita apariția artefactelor grafice prin modificarea directă a imaginii randate pe ecran. Astfel, imaginea afișată la momentul ''T'' a fost procesată la momentul ''T-1'', sau ''T-2'' (în funcție de dimensiunea bufferului).\\ | + | En général, les applications graphiques utilisent plusieurs tampons d'image pour éviter l'apparition d'artefacts graphiques en modifiant directement l'image affichée à l'écran. Ainsi, l'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 2 este tratat de către instanțele InputController în timp ce pasul 4 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 2 est gérée par les instances de InputController, tandis que l'étape 4 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 create, pe baza unui nume unic | + | * gestion du stockage des shader et modèles nouvellement créés, basé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-time. Este 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éel. Il 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 a 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 suprascriere) pentru 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 (écrasement) pour 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 - obiecte, moștenire, metode virtuale, etc | + | * concepts de base de la POO - objets, héritage, mé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 necesar. Pentru 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 requis. Pour 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ă robust, bine 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ții, translații, vectori 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 graphiques, les mathématiques sont utilisées partout, des 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 robuste, bien 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 rotations, des translations, des 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 1 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 monitore) este în format RGBA32. Fiecare componentă (red, green, blue, alpha) ocupă 8 biți, deci intervalul 0 – 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 moniteur) est au format RGBA32. Chaque composant (rouge, vert, bleu, alpha) occupe 8 bits, donc la plage 0 - 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â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** - roatation de caméra |
</note> | </note> | ||
- | === Cerințe laborator === | + | === Exigences de laboratoire === |
- | - Descărcați framework-ul, compilaț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 (render) la o poziție (să cicleze prin 3 obiecte, de ex cube, teapot, sphere) | + | - Lorsque vous appuyez sur une touche, modifiez l'objet affiché (rendu) en une position (pour parcourir 3 objets, par 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, E, Q (pozitiv și negativ pe toate cele 3 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 3 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> |