Differences

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

Link to this comparison view

egc:laboratoare:09 [2020/12/14 22:09]
florin_eugen.iancu [Maparea texturilor]
egc:laboratoare:09 [2021/11/12 19:22] (current)
victor.asavei [Cerinte laborator]
Line 74: Line 74:
   * Ultimul argument il reprezinta vectorul de date al imaginii. ​   * Ultimul argument il reprezinta vectorul de date al imaginii. ​
  
-Asadar''​glTextImage2D''​ incarca o imagine definita prin __datele efective__, adica un array de ''​unsigned char''​s,​ pe __obiectul de tip textura__ legat la __punctul de legare__ ''​GL_TEXTURE_2D''​ al __unitatii de texturare__ active la momentul curent, nivelul 0 (o sa luam aceasta constanta ca atare pentru moment), cu formatul intern ''​GL_RGB''​ cu lungimea width si cu inaltimea height, din formatul ''​GL_RGB''​. Datele citite sunt de tip ''​GL_UNSIGNED_BYTE''​ (adica ''​unsigned char''​) si sunt citite de la adresa data.+**Asadar:** ''​glTextImage2D''​ incarca o imagine definita prin __datele efective__, adica un array de ''​unsigned char''​s,​ pe __obiectul de tip textura__ legat la __punctul de legare__ ''​GL_TEXTURE_2D''​ al __unitatii de texturare__ active la momentul curent, nivelul 0 (o sa luam aceasta constanta ca atare pentru moment), cu formatul intern ''​GL_RGB''​ cu lungimea width si cu inaltimea height, din formatul ''​GL_RGB''​. Datele citite sunt de tip ''​GL_UNSIGNED_BYTE''​ (adica ''​unsigned char''​) si sunt citite de la adresa data
 + 
 +Pentru a va cimenta si mai mult aceste notiuni, gasiti detalii si exemple suplimentare **[[https://​stackoverflow.com/​a/​8887844|in aceasta postare]]**.
  
 ==== Utilizarea texturii ==== ==== Utilizarea texturii ====
Line 117: Line 119:
 </​code>​ </​code>​
  
-Multitexturarea este folositare in momentul in care reprezentam ​un obiect ​topologic ​complex, de exemplu frunze, cu o textura ce are o topologie mult inferioara ca si complexitate (de exemplu un quad). Daca utilizam o asemenea reducere de complexitate trebuie sa avem o metoda prin care sa putem elimina, la nivel de fragment, ​fragmentele ce nu sunt necesare (evidentiate in imaginea urmatoare).+Multitexturarea este folositare in momentul in care reprezentam un obiect complex ​din punct de vedere topologic, de exemplu frunze, cu o textura ce are o topologie mult inferioara ca si complexitate (de exemplu un quad). Daca utilizam o asemenea reducere de complexitatetrebuie sa avem o metoda prin care sa putem elimina, la nivel de fragment, ​acele fragmente care nu sunt necesare (evidentiate in imaginea urmatoare).
  
  {{ :​egc:​laboratoare:​lab9texturephoto4.png |}}  {{ :​egc:​laboratoare:​lab9texturephoto4.png |}}
  
-Puntru ​aceasta putem sa folosim o textura de opacitate (alpha) care ne spune care sunt fragmentele reale, vizibile, ale obiectului. Combinatia de textura de opacitate si textura de culoare este suficienta pentru definirea acestui bambus:+Pentru ​aceastaputem sa folosim o textura de opacitate (alpha) care ne spune care sunt fragmentele reale, vizibile, ale obiectului. Combinatia de textura de opacitate si textura de culoare este suficienta pentru definirea acestui bambus:
  
  {{ egc:​laboratoare:​lab9texturephoto5.png |}}  {{ egc:​laboratoare:​lab9texturephoto5.png |}}
 +
 +Elementele individuale ale unui ''​vec4''​ pot fi accesate utilizand numele componentelor:​\\
 +- Pentru date geometrice: ''​x,​ y, z, w''​\\
 +- Pentru date legate de culori (red, green, blue, alpha): ''​r,​ g, b, a''​\\
 +- Pentru date de texturare: ''​s,​ t, p, q''​\\
  
 Pentru a omite desenarea fragmentelor care nu sunt vizibile se foloseste directiva de shader ''​discard''​. Pentru a omite desenarea fragmentelor care nu sunt vizibile se foloseste directiva de shader ''​discard''​.
Line 209: Line 216:
     * Ex: Faceti alpha discard daca valoarea ''​alpha''​ este mai mica de 0.5f     * Ex: Faceti alpha discard daca valoarea ''​alpha''​ este mai mica de 0.5f
   - Creati si incarcati pe GPU o textura random   - Creati si incarcati pe GPU o textura random
-    * completati functia ''​Laborator9::​CreateRandomTexture''​+    * completati functia ''​Lab9::​CreateRandomTexture''​
     * ! generati mipmaps : ''​glGenerateMipmap(GL_TEXTURE_2D);''​     * ! generati mipmaps : ''​glGenerateMipmap(GL_TEXTURE_2D);''​
     * textura va fi folosita in cadrul randarii pe cubul din stanga     * textura va fi folosita in cadrul randarii pe cubul din stanga
Line 229: Line 236:
  
 Bonus: Bonus:
-  - Sa se trimita timpul aplicatiei ''​Engine::​GetElapsedTime()''​ catre fragment shader si sa se utilizeze pentru a cicla prin textura de pe globul pamantesc (pe coordonata ​OY) (doar pentru acel obiect, deci e nevoie de si de o variabila uniform pentru a testa obiectul randat)+  - Sa se trimita timpul aplicatiei ''​Engine::​GetElapsedTime()''​ catre fragment shader si sa se utilizeze pentru a cicla prin textura de pe globul pamantesc (pe coordonata ​OX) (doar pentru acel obiect, deci e nevoie de si de o variabila uniform pentru a testa obiectul randat)
   - Sa se roteasca spre directia camerei (doar pe OY) quadul cu textura de iarba astfel incat sa fie orientat tot timpul catre camera. <​hidden>​Sa se randeze inca de 2 ori aceasi textura in aceasi pozitie dar cu o rotatie (fata de cea pricipala) de +- 30 grade.   - Sa se roteasca spre directia camerei (doar pe OY) quadul cu textura de iarba astfel incat sa fie orientat tot timpul catre camera. <​hidden>​Sa se randeze inca de 2 ori aceasi textura in aceasi pozitie dar cu o rotatie (fata de cea pricipala) de +- 30 grade.
  
 </​hidden>​ </​hidden>​
egc/laboratoare/09.1607976547.txt.gz · Last modified: 2020/12/14 22:09 by florin_eugen.iancu
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