package Ġcom . atom . camera . core . e gl Ċ Ċ import Ġandroid . opengl .* ĊĊ Ċ class ĠE GL Helper Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm EGL Display : ĠE GL Display ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm EGL Config : ĠE GL Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm EGL Context : ĠE GL Context ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm EGL Surface : ĠE GL Surface ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor () Ġ: Ġthis ( EGL 1 4 . EGL _ DEFAULT _ DISPLAY ) ĊĊĠĠĠ Ġconstructor ( display : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Display ( display ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ æĺ¾ç¤º åĻ¨ Ġdisplay ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinit Display ( key : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm EGL Display Ġ= ĠE GL 1 4 . e glGet Display ( key ) ĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ çīĪæľ¬ åı· ï¼Į [ 0 ] ä¸º çīĪæľ¬ åı· ï¼Į [ 1 ] ä¸º åŃĲ çīĪæľ¬ åı· ĊĠĠĠĠĠĠĠ Ġval Ġversions Ġ= ĠInt Array ( 2 ) ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Initialize ( m EGL Display , Ġversions , Ġ 0 , Ġversions , Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ EGL çļĦ config ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetConfig ( attrs : ĠE GL Config Attrs ): ĠE GL Config ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfigs Ġ= ĠarrayOf Null s < EGL Config >( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġconfig Num Ġ= ĠInt Array ( 1 ) ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Choose Config ( m EGL Display , Ġattrs . build (), Ġ 0 , Ġconfigs , Ġ 0 , Ġ 1 , Ġconfig Num , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( config Num [ 0 ] Ġ> Ġ 0 ) Ġ{ Ġ Ġ// éĢīæĭ© çļĦ è¿ĩç¨ĭ åı¯èĥ½ åĩºçİ° å¤ļä¸ª ï¼Į ä¹Ł åı¯èĥ½ ä¸Ģä¸ª éĥ½ æ²¡æľī ï¼Į è¿ĻéĩĮ åıª çĶ¨ ä¸Ģä¸ª ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigs [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetDefault Config (): ĠE GL Config ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm EGL Config ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetDefault Surface (): ĠE GL Surface ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm EGL Surface ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetDefault Context (): ĠE GL Context ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm EGL Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Display (): ĠE GL Display ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm EGL Display ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º EGL Ġcontext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Context ( config : ĠE GL Config ?, Ġshare : ĠE GL Context ?, Ġattrs : ĠE GL Context Attrs ): ĠE GL Context Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠE GL 1 4 . e gl Create Context ( m EGL Display , Ġconfig , Ġshare , Ġattrs . build (), Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º ä¸Ģä¸ª window Ġsurface ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Window Surface ( surface : ĠAny ): ĠE GL Surface Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Window Surface ( m EGL Config Ġ, Ġsurface ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Window Surface ( config : ĠE GL Config ?, Ġsurface : ĠAny ): ĠE GL Surface Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠE GL 1 4 . e gl Create Window Surface ( m EGL Display , Ġconfig , Ġsurface , Ġint ArrayOf ( EGL 1 4 . EGL _ NONE ), Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º ä¸Ģä¸ª Ġ åĲİåı° Ġsurface ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate P Buffer Surface ( config : ĠE GL Config ?, Ġwidth : ĠInt , Ġheight : ĠInt ): ĠE GL Surface Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠE GL 1 4 . e gl Create P buffer Surface ( m EGL Display , Ġconfig , Ġint ArrayOf ( EGL 1 4 . EGL _ WIDTH , Ġwidth , ĠE GL 1 4 . EGL _ HEIGHT , Ġheight , ĠE GL 1 4 . EGL _ NONE ), Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º ĠE GL Ġconfig Ġcontext Ġsurface ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate GLES With Surface ( attrs : ĠE GL Config Attrs , Ġctx Attrs : ĠE GL Context Attrs , Ġsurface : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġm EGL Config Ġ= ĠgetConfig ( attrs . surface Type ( EGL 1 4 . EGL _ WINDOW _ BIT )) ĊĠĠĠĠĠĠĠ Ġif Ġ( m EGL Config Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm EGL Context Ġ= Ġcreate Context ( m EGL Config !! , ĠE GL 1 4 . EGL _ NO _ CONTEXT , Ġctx Attrs ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m EGL Context Ġ=== ĠE GL 1 4 . EGL _ NO _ CONTEXT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm EGL Surface Ġ= Ġcreate Window Surface ( surface ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m EGL Surface Ġ=== ĠE GL 1 4 . EGL _ NO _ SURFACE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! make Current ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Current ( draw : ĠE GL Surface ?, Ġread : ĠE GL Surface ?, Ġcontext : ĠE GL Context ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ ĠE GL 1 4 . e gl Make Current ( m EGL Display , Ġdraw , Ġread , Ġcontext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Current ( surface : ĠE GL Surface ?, Ġcontext : ĠE GL Context ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmake Current ( surface , Ġsurface , Ġcontext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Current ( surface : ĠE GL Surface ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmake Current ( surface , Ġm EGL Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Current (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmake Current ( m EGL Surface , Ġm EGL Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Presentation Time ( surface : ĠE GL Surface ?, Ġtime : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ ĠE GL Ext . e gl Presentation Time ANDROID ( m EGL Display , Ġsurface , Ġtime ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º ä¸Ģä¸ª åĲİåı° EGL Ġsurface ĊĠĠĠĠ Ġ* ĠåĴĮ Ġwindow Ġsurface ĠçļĦ ä¸įåĲĮ çļĦæĺ¯ , Ġ è¯¥ surface Ġåı¯ä»¥ éħįç½® åħ¶ å®½ é«ĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate GLES With P Buffer ( attrs : ĠE GL Config Attrs , Ġctx Attrs : ĠE GL Context Attrs , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠE GL Surface ? Ġ{ ĊĠĠĠĠĠĠĠ Ġm EGL Config Ġ= ĠgetConfig ( attrs . surface Type ( EGL 1 4 . EGL _ P BUFFER _ BIT )) ĊĠĠĠĠĠĠĠ Ġif Ġ( m EGL Config Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġe gl Context Ġ= Ġcreate Context ( m EGL Config , ĠE GL 1 4 . EGL _ NO _ CONTEXT , Ġctx Attrs ) ĊĠĠĠĠĠĠĠ Ġif Ġ( e gl Context Ġ=== ĠE GL 1 4 . EGL _ NO _ CONTEXT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġe gl Surface Ġ= Ġcreate P Buffer Surface ( m EGL Config , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġif Ġ( e gl Surface Ġ=== ĠE GL 1 4 . EGL _ NO _ SURFACE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! make Current ( e gl Surface )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġe gl Surface ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate GLES With P Buffer ( attrs : ĠE GL Config Attrs , Ġctx Attrs : ĠE GL Context Attrs , Ġe gl Surface : ĠE GL Surface ) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġm EGL Config Ġ= ĠgetConfig ( attrs . surface Type ( EGL 1 4 . EGL _ P BUFFER _ BIT )) ĊĠĠĠĠĠĠĠ Ġif Ġ( m EGL Config Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġe gl Context Ġ= Ġcreate Context ( m EGL Config , ĠE GL 1 4 . EGL _ NO _ CONTEXT , Ġctx Attrs ) ĊĠĠĠĠĠĠĠ Ġif Ġ( e gl Context Ġ=== ĠE GL 1 4 . EGL _ NO _ CONTEXT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! make Current ( e gl Surface )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġswap Buffers ( surface : ĠE GL Surface ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Swap Buffers ( m EGL Display , Ġsurface ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy GLES ( surface : ĠE GL Surface ?, Ġcontext : ĠE GL Context ? ){ ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Make Current ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm EGL Display , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 4 . EGL _ NO _ SURFACE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 4 . EGL _ NO _ SURFACE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 4 . EGL _ NO _ CONTEXT ) ĊĠĠĠĠĠĠĠ Ġif Ġ( surface Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Destroy Surface ( m EGL Display , Ġsurface ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Destroy Context ( m EGL Display , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Terminate ( m EGL Display ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy Surface ( surface : ĠE GL Surface ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Destroy Surface ( m EGL Display , Ġsurface ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Make Current ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm EGL Display , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 4 . EGL _ NO _ SURFACE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 4 . EGL _ NO _ SURFACE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE GL 1 4 . EGL _ NO _ CONTEXT ) ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Destroy Surface ( m EGL Display , Ġm EGL Surface ) ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Destroy Context ( m EGL Display , Ġm EGL Context ) ĊĠĠĠĠĠĠĠ ĠE GL 1 4 . e gl Terminate ( m EGL Display ) ĊĠĠĠ Ġ} Ċ Ċ }