亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android的動態(tài)壁紙的設(shè)計

        2019-12-09 02:06:28王曉東
        智富時代 2019年10期
        關(guān)鍵詞:設(shè)計

        【摘 要】本文介紹了手機(jī)動態(tài)壁紙的設(shè)計方法,以及實現(xiàn)的過程。運(yùn)行的目標(biāo)平臺為Android,使用OpenGL ES3.0渲染技術(shù)。

        【關(guān)鍵詞】Android;動態(tài)壁紙;設(shè)計

        一、引言

        隨著移動互聯(lián)網(wǎng)的快速發(fā)展,單一的圖片壁紙已經(jīng)不能滿足用戶的需求,動態(tài)壁紙用動態(tài)的影像替換了原始古板的靜態(tài)壁紙,并且不影響圖標(biāo)的顯示和應(yīng)用程序的使用。通過動態(tài)壁紙讓桌面顯得更加酷炫、個性,增加手機(jī)的魅力。本項目采用的動態(tài)壁紙為3D水族館,在該壁紙中有許多自由游動的魚,地面有不斷一張一合的珍珠貝和不斷閃爍的珍珠。還有幾處不斷冒出氣泡,并且這些氣泡隨高度增加而不斷變大。用戶可以單擊地面給魚喂食,也可以左右滑動屏幕,使壁紙跟隨滑動。使用3ds Max對模型進(jìn)行設(shè)計與貼圖,所有相關(guān)圖片資源統(tǒng)一放在一個項目文件夾中。采用OpenGL ES3.0渲染技術(shù),使得場景中有很強(qiáng)的立體感,以及非常逼真的光影效果。

        二、類的設(shè)計

        在水族館壁紙的制作中設(shè)計了很多類,主要有以下五個方面。(1)壁紙實現(xiàn)類,具體又有壁紙服務(wù)類和自定義場景渲染器類。前者是水族館壁紙的基礎(chǔ)類,通過繼承GLWallpaperService類,重寫onCreateEngine方法等來實現(xiàn)壁紙功能;后者是水族館壁紙的核心類,在本類中首先設(shè)置使用渲染技術(shù),然后創(chuàng)建需要繪制的所有對象,設(shè)置繪制方式,加載各類物體模型以及所需紋理,設(shè)置攝像機(jī)位置,使用投影矩陣,初始化光源位置等。

        (2)繪制類,具體包括群魚控制類、單條魚類、單個魚群類、喂食類、魚食類、氣泡控制類以及珍珠貝類等。群魚控制類定義了群魚列表,存放所有的單條魚對象,創(chuàng)建并啟動魚的移動線程,最后遍歷列表對魚進(jìn)行繪制。單條魚類定義了魚的所有屬性,包括位置、速度、外力、質(zhì)量以及旋轉(zhuǎn)角度等,單個魚群類定義了魚群中每條魚的所有相關(guān)屬性。喂食類是食物的控制類,其中的startFeed方法由攝像機(jī)與觸控點(diǎn)確定一條與場景地面高度交叉的拾取射線,并計算出交點(diǎn)的坐標(biāo)。魚食類的作用是創(chuàng)建并啟動線程,繪制魚食。

        (3)線程類,具體包括群魚游動線程類、魚食移動線程類和氣泡移動線程類等。群魚游動線程類的作用是通過遍歷群魚列表判斷兩條魚之間的距離,若距離小于閾值,則兩條魚之間產(chǎn)生力的作用。還可以進(jìn)行碰撞檢測,修改外力、速度和位置等屬性值。魚食移動線程類的主要作用是判斷魚群中的魚與相對位置的距離,若大于閾值就會對該魚產(chǎn)生向心力,并對魚群進(jìn)行碰撞檢測。氣泡移動線程類的作用是遍歷氣泡列表,判斷氣泡移動方向,然后調(diào)用氣泡對象中的bubbleMove方法,實現(xiàn)氣泡的移動。

        (4)工具常量類,具體包括常量類、向量類、屏幕拾取類和存儲矩陣狀態(tài)類等。常量類是整個壁紙中用到的所有靜態(tài)常量的集合,向量類包含了相關(guān)向量算法、獲取力的大小等方法。屏幕拾取類通過拾取計算獲得觸控點(diǎn)在攝像機(jī)坐標(biāo)系中的坐標(biāo),再乘以攝像機(jī)矩陣的逆矩陣,即可得到該點(diǎn)在世界坐標(biāo)系中的坐標(biāo)。

        (5)輔助繪制類,具體包括背景圖輔助繪制類、氣泡輔助繪制類和珍珠貝輔助繪制類等。以背景圖輔助繪制類為例,它給出背景圖的頂點(diǎn)坐標(biāo)和紋理坐標(biāo),并生成緩沖送進(jìn)渲染管線,用來繪制背景圖。

        三、類的實現(xiàn)

        以自定義場景渲染器類為例,介紹動態(tài)壁紙相關(guān)類的實現(xiàn)。首先清除深度緩沖與顏色緩沖,進(jìn)行現(xiàn)場保護(hù),依次繪制背景圖、魚食、單條魚魚群以及珍珠貝。相關(guān)代碼如下:

        GLE30.glClear(GLES30.GL_DEPTH_BUFFER_BIT| GLES30.GL_COLOR_BUFFER_BIT);

        if(bg!=null){bg.drawSelf(back);}

        if(singlefood!=null){singlefood.drawSelf();}

        if(fishControl!=null){fishControl.drawSelf();}

        …………

        重寫onSurfaceChanged方法,設(shè)置視窗的尺寸和位置,計算寬高比,產(chǎn)生投影矩陣以及攝像機(jī)參數(shù)位置矩陣。相關(guān)代碼如下:

        GLES30.glViewport(0,0,width,height);

        float ratio=(float)width/height;

        …………

        重寫onSurfaceCreated方法,初始化光源位置,加載紋理,加載BNModel模型,創(chuàng)建魚群、珍珠貝等對象,開啟深度檢測等。相關(guān)代碼如下:

        MatrixState.setInitStack();

        MatrixState.setLightLocation(0,9,13);

        dpm=initTexture(MySurfaceView,this,getResources(),”dpm.png”);

        back=initTexture(MySurfaceView,this,getResources(),”background.png”);

        …………

        重寫initTexture方法,通過輸入流從assets中加載圖片,生成紋理ID,設(shè)置紋理的拉伸方式,設(shè)置紋理采樣方式,最后釋放Bitmap。相關(guān)代碼如下:

        GLES30.glGenTextures(1,textures,0);

        int textureId=textures[0];

        GLES30.glBindTexture(GLES30.GL_TEXTURE_2D,textureId);

        back=initTexture(MySurfaceView,this,getResources(),”background.png”);

        …………

        bitmapTmp.recycle();

        四、結(jié)語

        在軟件設(shè)計過程中,重點(diǎn)是著色器的應(yīng)用,以及魚游動過程中魚與魚之間作用力的變化規(guī)律等。動態(tài)壁紙的界面和風(fēng)格還可以繼續(xù)改進(jìn),使其更加完美。例如水族館背景壁紙、魚的骨骼動畫及紋理圖、珍珠貝的紋理圖都可以進(jìn)一步完善,從而達(dá)到更加理想的效果。本項目將明暗紋理和法向量的計算放在了片元著色器上進(jìn)行,這樣的處理方式占用資源過多??梢钥紤]將片元著色器中這部分計算任務(wù)轉(zhuǎn)移到頂點(diǎn)著色器中進(jìn)行,預(yù)期會顯著減少壁紙在運(yùn)行時對手機(jī)GPU資源的消耗。

        【參考文獻(xiàn)】

        [1] 吳亞峰. Android應(yīng)用案例開發(fā)大全(第4版)[M].北京:人民郵電出版社, 2018.

        作者簡介:王曉東(1971—),男,漢族,湖北十堰人,副教授,主要研究方向:軟件開發(fā)。

        猜你喜歡
        設(shè)計
        何為設(shè)計的守護(hù)之道?
        《豐收的喜悅展示設(shè)計》
        流行色(2020年1期)2020-04-28 11:16:38
        瞞天過?!律O(shè)計萌到家
        設(shè)計秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        設(shè)計之味
        舒適廣告(2008年9期)2008-09-22 10:02:48
        欧洲熟妇色xxxx欧美老妇性| 国产毛片一区二区三区| 在线不卡av一区二区| 中国孕妇变态孕交xxxx| 日本一区二区三区高清视| 国产一区二区三区久久精品| 明星性猛交ⅹxxx乱大交| 国产国语对白一区二区三区| 精品国产亚洲av久一区二区三区| 337p日本欧洲亚洲大胆色噜噜 | 亚洲精品无码久久久| 午夜AV地址发布| 国产大陆av一区二区三区| 人妻中文字幕日韩av| 亚洲精品国产美女久久久| 欧美人与物videos另类| 五月天国产精品| 偷拍与自偷拍亚洲精品| 国产亚洲成性色av人片在线观| 人妻少妇乱子伦无码视频专区| 好大好硬好爽免费视频| 国产一级r片内射免费视频| 狼人伊人影院在线观看国产| 两个人看的www免费视频中文| 国产精品露脸张开双腿| 加勒比一本大道大香蕉| 亚洲精品国产一二三区| 亚洲自偷自拍熟女另类| 日韩激情网| 最新国产激情视频在线观看| 国产成人精品a视频| 亚洲成人日韩| 蜜桃av噜噜噜一区二区三区| 夜夜爽夜夜叫夜夜高潮| 精品国精品无码自拍自在线| 爆乳午夜福利视频精品| 国产性虐视频在线观看| 精品9e精品视频在线观看| 亚洲成a∨人片在线观看无码 | 一个人看的www免费视频中文 | 国产日产精品久久久久久|