package Ġcom . jad yn . medi akit . gl Ċ Ċ import Ġandroid . opengl . GLES 1 1 Ext Ċ import Ġandroid . opengl . GLES 2 0 Ċ import Ġandroid . opengl . GLES 3 0 Ċ Ċ /** Ċ Ġ*@ version : Ċ Ġ*@ File Description : Ġ çº ¹ çĲĨ çĽ¸åħ³ çļĦ åįı åĬ© ç±» Ċ Ġ*@ Author : J ing Ċ Ġ*@ Since : 2 0 1 9 / 4 / 1 0 Ċ Ġ*@ Change List : Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠçĶŁæĪĲ å¸ § ç¼ĵ åĨ² Ċ Ġ* Ġ*/ Ċ fun Ġbuild Frame Buffer (): ĠInt Ġ{ ĊĠĠĠ Ġval Ġframes Ġ= ĠInt Array ( 1 ) ĊĠĠĠ ĠGLES 2 0 . gl Gen Frame buffers ( 1 , Ġframes , Ġ 0 ) ĊĠĠĠ ĠGLES 2 0 . glBind Framebuffer ( GLES 2 0 . GL _ FRAMEBUFFER , Ġframes [ 0 ]) ĊĠĠĠ Ġcheck Gl Error (" create Ġframe Ġbuffer Ġcheck ") ĊĠĠĠ Ġreturn Ġframes [ 0 ] Ċ } Ċ Ċ fun Ġappend F BO Texture ( texture Id : ĠInt , Ġtarget : ĠInt Ġ= ĠGLES 1 1 Ext . GL _ TEXTURE _ EXTERNAL _ OES ) Ġ{ ĊĠĠĠ ĠGLES 2 0 . gl Framebuffer Texture 2 D ( GLES 2 0 . GL _ FRAMEBUFFER , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ COLOR _ ATTACHMENT 0 , Ġtarget , Ġtexture Id , Ġ 0 ) ĊĠĠĠ Ġun Bind Texture ( target ) ĊĠĠĠ Ġun Bind Frame Buffer () Ċ } Ċ Ċ /** Ċ Ġ* ĠåĪĽå»º ä¸Ģä¸ª çº ¹ çĲĨ å¯¹è±¡ ï¼Į å¹¶ä¸Ķ åĴĮ ES ç»ĳå®ļ Ċ Ġ* Ċ Ġ* ĠçĶŁæĪĲ camera çī¹æ®Ĭ çļĦ Texture Ċ Ġ* Ġåľ¨ Android ä¸Ń Camera äº§çĶŁ çļĦ preview Ġtexture æĺ¯ ä»¥ ä¸Ģç§į çī¹æ®Ĭ çļĦ æł¼å¼ı ä¼ł éĢģ çļĦ ï¼Į Ċ Ġ* Ġ åĽłæŃ¤ shader éĩĮ çļĦ çº ¹ çĲĨ ç±»åŀĭ å¹¶ ä¸įæĺ¯ æĻ®éĢļ çļĦ sampler 2 D , èĢĮ æĺ¯ sampler External OES , Ċ Ġ* Ġåľ¨ shader çļĦ å¤´ éĥ¨ ä¹Ł å¿ħé¡» å£°æĺİ OES ĠçļĦ æī©å±ķ ãĢĤ éĻ¤ æŃ¤ ä¹ĭ å¤ĸ ï¼Į external ĠO ES çļĦ çº ¹ çĲĨ åĴĮ Sampler 2 D åľ¨ ä½¿çĶ¨ æĹ¶ æ²¡æľī å·® åĪ« Ċ Ġ* Ġ*/ Ċ fun Ġbuild Texture Id ( target : ĠInt Ġ= ĠGLES 1 1 Ext . GL _ TEXTURE _ EXTERNAL _ OES ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġids Ġ= ĠInt Array ( 1 ) ĊĠĠĠ ĠGLES 2 0 . gl Gen Textures ( 1 , Ġids , Ġ 0 ) ĊĠĠĠ Ġcheck Gl Error (" create Ġtexture Ġcheck ") ĊĠĠĠ Ġval Ġid Ġ= Ġids [ 0 ] ĊĠĠĠ Ġbind Set Texture ( target , Ġid ) ĊĠĠĠ Ġreturn Ġid Ċ } Ċ Ċ private Ġfun Ġbind Set Texture ( target : ĠInt , Ġid : ĠInt ) Ġ{ ĊĠĠĠ Ġ// Ġ è¿ĻéĩĮ çļĦ ç»ĳå®ļ çº ¹ çĲĨ æĺ¯ å°Ĩ GPU çļĦ çº ¹ çĲĨ æķ°æį® åĴĮ ID å¯¹åºĶ èµ·æĿ¥ ï¼Į è½½ åħ¥ çº ¹ çĲĨ åĪ° æŃ¤ ID å¤Ħ ĊĠĠĠ Ġ// Ġæ¸ ²æŁĵ æĹ¶ ç»ĳå®ļ çº ¹ çĲĨ ï¼Į æĺ¯ ç»ĳå®ļ çº ¹ çĲĨ ID åĪ° æ¿Ģ æ´» çļĦ çº ¹ çĲĨ åįķåħĥ ĊĠĠĠ ĠGLES 2 0 . glBind Texture ( target , Ġid ) ĊĠĠĠ Ġcheck Gl Error (" bind Ġtexture Ġ: Ġ$ id Ġcheck ") ĊĊĠĠĠ Ġ// ---- è®¾ç½® çº ¹ çĲĨ åıĤæķ° ---- ĊĠĠĠ Ġ// Ġ çº ¹ çĲĨ è¿ĩæ»¤ åĻ¨ æĶ¾ å¤§ ç¼© å°ı ĊĠĠĠ ĠGLES 2 0 . gl TexParameter i ( target , ĠGLES 2 0 . GL _ TEXTURE _ MAG _ FILTER , ĠGLES 2 0 . GL _ LINEAR ) ĊĠĠĠ ĠGLES 2 0 . gl TexParameter i ( target , ĠGLES 2 0 . GL _ TEXTURE _ MIN _ FILTER , ĠGLES 2 0 . GL _ LINEAR ) ĊĊĠĠĠ ĠGLES 2 0 . gl TexParameter i ( target , ĠGLES 2 0 . GL _ TEXTURE _ WRAP _ S , ĠGLES 2 0 . GL _ CLAMP _ TO _ EDGE ) ĊĠĠĠ ĠGLES 2 0 . gl TexParameter i ( target , ĠGLES 2 0 . GL _ TEXTURE _ WRAP _ T , ĠGLES 2 0 . GL _ CLAMP _ TO _ EDGE ) Ċ } Ċ Ċ fun Ġun Bind Texture ( target : ĠInt Ġ= ĠGLES 1 1 Ext . GL _ TEXTURE _ EXTERNAL _ OES ) Ġ{ ĊĠĠĠ ĠGLES 2 0 . glBind Texture ( target , ĠGLES 2 0 . GL _ NONE ) Ċ } Ċ Ċ fun Ġun Bind Frame Buffer () Ġ{ ĊĠĠĠ ĠGLES 2 0 . glBind Framebuffer ( GLES 2 0 . GL _ FRAMEBUFFER , ĠGLES 2 0 . GL _ NONE ) Ċ } Ċ Ċ fun Ġun Bind Frame Buffer 3 () Ġ{ ĊĠĠĠ ĠGLES 3 0 . glBind Framebuffer ( GLES 2 0 . GL _ FRAMEBUFFER , ĠGLES 2 0 . GL _ NONE ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ éĩĬæĶ¾ çº ¹ çĲĨ Ċ Ġ* Ġ*/ Ċ fun Ġrelease Texture ( id : ĠInt Array ) Ġ{ ĊĠĠĠ ĠGLES 2 0 . gl Delete Textures ( id . size , Ġid , Ġ 0 ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ éĩĬæĶ¾ å¸ § ç¼ĵ åĨ² åĴĮ çº ¹ çĲĨ Ċ Ġ* Ġ*/ Ċ fun Ġrelease Frame Buffer Texture ( frame : ĠInt Array , Ġtexture Id : ĠInt Array ) Ġ{ ĊĠĠĠ ĠGLES 2 0 . gl Delete Frame buffers ( 1 , Ġframe , Ġ 0 ) ĊĠĠĠ Ġrelease Texture ( texture Id ) Ċ } Ċ Ċ fun Ġrelease Frame Buffer Texture ( frame : ĠInt , Ġtexture Id : ĠInt ) Ġ{ ĊĠĠĠ Ġrelease Frame Buffer Texture ( int ArrayOf ( frame ), Ġint ArrayOf ( texture Id )) Ċ }