package Ġcom . st . st player . renderer . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . opengl . GLES 1 1 Ext Ċ import Ġandroid . opengl . GLES 2 0 Ċ import Ġandroid . opengl . GL Utils Ċ import Ġcom . st . st player . util . Log Util Ċ Ċ class ĠTexture Util Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Texture Helper " ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate O EST ext ure Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtextures Ġ= ĠInt Array ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Gen Textures ( 1 , Ġtextures , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . glBind Texture ( GLES 1 1 Ext . GL _ TEXTURE _ EXTERNAL _ OES , Ġtextures [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl TexParameter f ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 1 1 Ext . GL _ TEXTURE _ EXTERNAL _ OES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ TEXTURE _ MIN _ FILTER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ LINEAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl TexParameter f ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 1 1 Ext . GL _ TEXTURE _ EXTERNAL _ OES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ TEXTURE _ MAG _ FILTER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ LINEAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl TexParameter i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 1 1 Ext . GL _ TEXTURE _ EXTERNAL _ OES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ TEXTURE _ WRAP _ S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ CLAMP _ TO _ EDGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl TexParameter i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 1 1 Ext . GL _ TEXTURE _ EXTERNAL _ OES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ TEXTURE _ WRAP _ T , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ CLAMP _ TO _ EDGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtextures [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæł¹æį® èµĦæºĲ ID èİ·åıĸ çĽ¸åºĶ çļĦ OpenGL çº ¹ çĲĨ ID ï¼Į èĭ¥ åĬłè½½ å¤±è´¥ åĪĻ è¿ĶåĽŀ 0 ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< br ></ br > å¿ħé¡» åľ¨ GL çº¿ç¨ĭ ä¸Ń è°ĥçĶ¨ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġload Texture ( context : ĠContext , Ġresource Id : ĠInt ): ĠTexture Bean ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbean Ġ= ĠTexture Bean () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Object Ids Ġ= ĠInt Array ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 . ĠåĪĽå»º çº ¹ çĲĨ å¯¹è±¡ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Gen Textures ( 1 , Ġtexture Object Ids , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( texture Object Ids [ 0 ] Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . w ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Could Ġnot Ġgenerate Ġa Ġnew ĠOpenGL Ġtexture Ġobject ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠBitmap Factory . Options () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . in Scaled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources , Ġresource Id , Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . w ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Resource ĠID Ġ$ resourceId Ġcould Ġnot Ġbe Ġdecoded ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĬłè½½ Bitmap èµĦæºĲ å¤±è´¥ ï¼Į åĪłéĻ¤ çº ¹ çĲĨ Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Delete Textures ( 1 , Ġtexture Object Ids , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 . Ġå°Ĩ çº ¹ çĲĨ ç»ĳå®ļ åĪ° OpenGL å¯¹è±¡ ä¸Ĭ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . glBind Texture ( GLES 2 0 . GL _ TEXTURE _ 2 D , Ġtexture Object Ids [ 0 ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 . Ġè®¾ç½® çº ¹ çĲĨ è¿ĩæ»¤ åıĤæķ° : è§£åĨ³ çº ¹ çĲĨ ç¼© æĶ¾ è¿ĩç¨ĭ ä¸ŃçļĦ éĶ ¯ é½ ¿ éĹ®é¢ĺ ãĢĤ èĭ¥ ä¸į è®¾ç½® ï¼Į åĪĻ ä¼ļ å¯¼èĩ´ çº ¹ çĲĨ ä¸º é»ĳ èī² ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl TexParameter i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ TEXTURE _ 2 D , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ TEXTURE _ MIN _ FILTER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ LINEAR _ MIP MAP _ LINEAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl TexParameter i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ TEXTURE _ 2 D , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ TEXTURE _ MAG _ FILTER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . GL _ LINEAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 4 . ĠéĢļè¿ĩ OpenGL å¯¹è±¡ è¯»åıĸ Bitmap æķ°æį® ï¼Į å¹¶ä¸Ķ ç»ĳå®ļ åĪ° çº ¹ çĲĨ å¯¹è±¡ ä¸Ĭ ï¼Į ä¹ĭåĲİ å°±åı¯ä»¥ åĽŀ æĶ¶ Bitmap å¯¹è±¡ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGL Utils . tex Image 2 D ( GLES 2 0 . GL _ TEXTURE _ 2 D , Ġ 0 , Ġbitmap , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNote : ĠFollowing Ġcode Ġmay Ġcause Ġan Ġerror Ġto Ġbe Ġreported Ġin Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA DB Ġlog Ġas Ġfollows : ĠE / IMG SRV ( 2 0 0 9 5 ): Ġ: 0 : ĠHardware Mip Gen : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFailed Ġto Ġgenerate Ġtexture Ġmip map Ġlevels Ġ( error = 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo ĠOpenGL Ġerror Ġwill Ġbe Ġencountered Ġ( glGet Error () Ġwill Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 0 ). ĠIf Ġthis Ġhappens , Ġjust Ġsqu ash Ġthe Ġsource Ġimage Ġto Ġbe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġimg 2 . ĠIt Ġwill Ġlook Ġthe Ġsame Ġbecause Ġof Ġtexture Ġcoordinates , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġmip map Ġgeneration Ġwill Ġwork . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 5 . ĠçĶŁæĪĲ Mip ä½į åĽ¾ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . gl Generate Mip map ( GLES 2 0 . GL _ TEXTURE _ 2 D ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 6 . Ġ åĽŀ æĶ¶ Bitmap å¯¹è±¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbean . width Ġ= Ġbitmap . width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbean . height Ġ= Ġbitmap . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . recycle () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 7 . Ġå°Ĩ çº ¹ çĲĨ ä»İ OpenGL å¯¹è±¡ ä¸Ĭ è§£ ç»ĳ ï¼Į çİ°åľ¨ OpenGL å·²ç»ı å®ĮæĪĲ äºĨ çº ¹ çĲĨ çļĦ åĬłè½½ ï¼Į ä¸įéľĢè¦ģ åĨį ç»ĳå®ļ æŃ¤ çº ¹ çĲĨ äºĨ ï¼Į åĲİ éĿ¢ ä½¿çĶ¨ æŃ¤ çº ¹ çĲĨ æĹ¶ éĢļè¿ĩ çº ¹ çĲĨ å¯¹è±¡çļĦ ID åį³åı¯ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 2 0 . glBind Texture ( GLES 2 0 . GL _ TEXTURE _ 2 D , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æīĢä»¥ æķ´ä¸ª æµģç¨ĭ ä¸Ń ï¼Į OpenGL å¯¹è±¡ ç±»ä¼¼ ä¸Ģä¸ª å®¹åĻ¨ æĪĸèĢħ ä¸ŃéĹ´ èĢħ çļĦæĸ¹å¼ı ï¼Į å°Ĩ Bitmap æķ°æį® è½¬ ç§» åĪ° OpenGL çº ¹ çĲĨ ä¸Ĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbean . texture Id Ġ= Ġtexture Object Ids [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbean ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ çº ¹ çĲĨ æķ°æį® ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġclass ĠTexture Bean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtexture Id Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġwidth Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġheight Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }