Framebufferobjekt
Frame buffer object (FBO) är en förlängning av OpenGL -arkitekturen för flexibel rendering utanför skärmen, inklusive rendering till textur. Att ersätta utgångsmålet från skärmbufferten med FBO kan användas för att tillämpa alla sorters filter och efterbehandlingseffekter. Detta liknar modellen för renderingsmål i DirectX . Den används i OpenGL för effektivitet och användarvänlighet. FBO kräver inte skapandet och bytet av renderingskontexter, som är plattformsberoende, och det är också en snabbare operation än pbuffer [1] .
Användning
Den har två huvudsakliga användningsområden: efterbearbetning av den resulterande bilden och att kombinera olika scener. Till exempel:
- Den renderade bilden fångas och skickas till fragment shaders eller andra manipulationer. Detta möjliggör många av de för närvarande populära grafiska effekterna, inklusive oskärpa och bloom .
- Kan användas för att se andra scener. Till exempel visar TV:n i huset utsikten från den andra kameran. Scenen på TV:n kan renderas via FBO till en textur, som sedan appliceras på TV:ns yta. Detta kallas Render to Texture (RTT) [1] .
Fördelar jämfört med andra metoder
- Enklare än andra metoder.
- Kräver ingen kontextändring.
- Mer effektivt eftersom alla resurser är i samma sammanhang.
- Mer flexibel då djupbuffertar, schabloner och annat kan anslutas.
Arkitektur
För att använda en FBO skapas en instans av den. Efter det finns det flera anslutningar, en av dem är valet av mottagaren, antingen texturen eller renderingsbufferten .
Exempel:
- FBO skapas.
- Färgbufferten är kopplad till texturen.
- Ansluter djupbufferten till texturen.
- Återge en textur till skärmen med en fragmentskuggning, beroende på informationen i färg och djup.
Anteckningar
- ↑ 1 2 Boreskov, 2006 .
Litteratur
- Boreskov Alexey . Shader utveckling och felsökning. - BHV-Petersburg, 2006. - 488 sid. - ISBN 5-94157-712-5 .
Länkar