package Ġcom . and roi dex periment s . shader cam . e gl Ċ Ċ import Ġandroid . opengl . GLES 2 0 Ċ import Ġcom . and roi dex periment s . shader cam . Renderer Callbacks Ċ import Ġcom . and roi dex periment s . shader cam . e gl . filter . Gl Filter Ċ import Ġjava . util . LinkedList Ċ import Ġjava . util . Queue Ċ Ċ abstract Ġclass ĠGl Frame Buffer Object Renderer Ġ: ĠRenderer Callbacks Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġframebuffer Object : ĠGl Framebuffer Object ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġnormal Shader : ĠGl Filter ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġrun On Draw : ĠQueue < Runnable > Ġ= ĠLinkedList () ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Created () Ġ{ ĊĠĠĠĠĠĠĠ Ġframebuffer Object Ġ= ĠGl Framebuffer Object () ĊĠĠĠĠĠĠĠ Ġnormal Shader Ġ= ĠGl Filter () ĊĠĠĠĠĠĠĠ Ġnormal Shader ?. setup () ĊĠĠĠĠĠĠĠ Ġon SCre ated () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Surface Changed ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġframebuffer Object ?. setup ( width , Ġheight ) ĊĠĠĠĠĠĠĠ Ġnormal Shader ?. set Frame Size ( width , Ġheight ) ĊĠĠĠĠĠĠĠ Ġon S Changed ( width , Ġheight ) ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Viewport ( 0 , Ġ 0 , Ġframebuffer Object !!. width , Ġframebuffer Object !!. height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw Frame () Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( run On Draw ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! run On Draw . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Draw . poll (). run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġframebuffer Object ?. enable () ĊĠĠĠĠĠĠĠ Ġframebuffer Object ?. let (:: on Draw Frame ) ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . glBind Framebuffer ( GLES 2 0 . GL _ FRAMEBUFFER , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Clear ( GLES 2 0 . GL _ COLOR _ BUFFER _ BIT Ġor ĠGLES 2 0 . GL _ DEPTH _ BUFFER _ BIT ) ĊĠĠĠĠĠĠĠ Ġframebuffer Object ?. tex Name ?. let Ġ{ Ġnormal Shader ?. draw ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġon SCre ated () ĊĠĠĠ Ġabstract Ġfun Ġon S Changed ( width : ĠInt , Ġheight : ĠInt ) ĊĠĠĠ Ġabstract Ġfun Ġon Draw Frame ( f bo : ĠGl Framebuffer Object ) Ċ }