Differences

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

Link to this comparison view

egc:laboratoare:bonusrendertext [2019/11/25 18:09]
victor.asavei [Redarea unei linii de text]
egc:laboratoare:bonusrendertext [2019/12/03 07:56] (current)
alexandru.gradinaru
Line 1: Line 1:
-===== Laborator ​bonus =====+===== Resurse ​bonus =====
  
 ==== Redare text în OpenGL ==== ==== Redare text în OpenGL ====
Line 18: Line 18:
 Cea de-a doua variantă (și cea care este folosită și pentru implementare în continuarea laboratorului) este ca pentru fiecare caracter/​simbol să se creeze câte o textură individuală ce va avea dimensiunea (lătime/​înălțime) caracterului/​simbolului. Această metodă permite o mai bună flexibilitate în manipularea fiecărui caracter/​simbol în parte pentru poziționarea/​scalarea acestuia. Cea de-a doua variantă (și cea care este folosită și pentru implementare în continuarea laboratorului) este ca pentru fiecare caracter/​simbol să se creeze câte o textură individuală ce va avea dimensiunea (lătime/​înălțime) caracterului/​simbolului. Această metodă permite o mai bună flexibilitate în manipularea fiecărui caracter/​simbol în parte pentru poziționarea/​scalarea acestuia.
  
-Pentru a obtine ​textura ​pentru fiecare caracter/​simbol necesar dintr-un font dat, a fost folosită biblioteca //​FreeType//​.+Pentru a obtine ​imaginea (bitmapul) ​pentru fiecare caracter/​simbol necesar dintr-un font dat, a fost folosită biblioteca //​FreeType//​.
  
 ==== Utilizare FreeType ==== ==== Utilizare FreeType ====
Line 87: Line 87:
   * Vertex shader   * Vertex shader
 <code glsl> <code glsl>
-layout(location = 0) in vec4 vertex; // <vec2 posvec2 tex>+layout(location = 0) in vec4 vertex; // <x,y,u,v>
 out vec2 TexCoords; out vec2 TexCoords;
  
Line 215: Line 215:
           * z,w: coordonatele de textură asociate vârfului           * z,w: coordonatele de textură asociate vârfului
   * Se desenează quad-ul format din cele două triunghiuri cu textura corespunzătoare caracterului (//​glBindTexture(GL_TEXTURE_2D,​ ch.TextureID)//​) și cu mecanismul de blending activat pentru a nu desena decât pixelii caracterului și a ignora restul quad-ului care este transparent   * Se desenează quad-ul format din cele două triunghiuri cu textura corespunzătoare caracterului (//​glBindTexture(GL_TEXTURE_2D,​ ch.TextureID)//​) și cu mecanismul de blending activat pentru a nu desena decât pixelii caracterului și a ignora restul quad-ului care este transparent
 +
 +==== Utilizare ====
 +
 +  - Descărcați [[https://​github.com/​UPB-Graphics/​Framework-EGC/​archive/​withrendertext.zip|framework-ul de laborator]] ce are implementat redarea textului
 +  - Rulați exemplul de redare a textului: clasa ''​Laborator_BonusTextRenderer'' ​
 +  - Dacă doriți să vedeți în detaliu implementarea redării textului examinați:
 +    * Clasa ''​TextRenderer''​ din /​TextRenderer
 +    * Shaderele ''​VertexShaderText.glsl''​ și ''​FragmentShaderText.glsl''​ din /​TextRenderer/​Shaders
 +
egc/laboratoare/bonusrendertext.1574698140.txt.gz · Last modified: 2019/11/25 18:09 by victor.asavei
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