Obiect Framebuffer
Frame buffer object (FBO) este o extensie a arhitecturii OpenGL pentru randarea flexibilă în afara ecranului, inclusiv redarea la textură. Înlocuirea țintei de ieșire din memoria tampon de ecran cu FBO poate fi folosită pentru a aplica tot felul de filtre și efecte de post-procesare. Acesta este similar cu modelul țintelor de randare din DirectX . Este folosit în OpenGL pentru eficiență și ușurință în utilizare. FBO nu necesită crearea și comutarea contextelor de randare, care sunt dependente de platformă, și este, de asemenea, o operațiune mai rapidă decât pbuffer [1] .
Utilizare
Are două utilizări principale: post-procesarea imaginii rezultate și combinarea diferitelor scene. De exemplu:
- Imaginea redată este capturată și transmisă la fragment shaders sau alte manipulări. Acest lucru permite multe dintre efectele grafice populare în prezent, inclusiv estomparea și înflorirea .
- Poate fi folosit pentru a vizualiza alte scene. De exemplu, televizorul din casă arată vederea de la a doua cameră. Scena de pe televizor poate fi redată prin FBO într-o textură, care va fi apoi aplicată pe suprafața televizorului. Aceasta se numește Render to Texture (RTT) [1] .
Avantaje față de alte metode
- Mai ușor decât alte metode.
- Nu necesită schimbare de context.
- Mai eficient deoarece toate resursele sunt în același context.
- Mai flexibil, deoarece pot fi conectate tampoane de adâncime, șabloane și altele.
Arhitectură
Pentru a utiliza un FBO, este creată o instanță a acestuia. După aceea, există mai multe conexiuni, una dintre ele este alegerea destinatarului, fie textura , fie bufferul de randare .
Exemplu:
- Se creează FBO.
- Bufferul de culoare este conectat la textura.
- Conectează tamponul de adâncime la textură.
- Redarea unei texturi pe ecran folosind un fragment shader, în funcție de informațiile în culoare și profunzime.
Note
- ↑ 1 2 Boreskov, 2006 .
Literatură
- Boreskov Alexey . Dezvoltare și depanare shader. - BHV-Petersburg, 2006. - 488 p. - ISBN 5-94157-712-5 .
Link -uri