freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android手機系統(tǒng)的3d桌面主題開發(fā)畢業(yè)論文(編輯修改稿)

2025-07-20 22:46 本頁面
 

【文章內(nèi)容簡介】 需要把圖片等圖像信息顯示出來,因此需要有一個機制能使二維圖像在三維場景中展現(xiàn),這就是紋理貼圖。紋理映射允許將指定的紋理素材映射到三維物體指定的多邊形面上。但OpenGL ES中僅支持三角形,因此指定紋理坐標時需要對圖像進行切割。物體上的每一點對應一組紋理坐標s、t,在對紋理進行粘貼之前要根據(jù)其所應用的片段進行排列。對于二維的紋理圖,~,但是進行紋理貼圖的物體沒有坐標范圍的限制。但在應用開發(fā)中,有時候需要把一幅紋理圖拉伸或縮小到目標面上,在目標面很大的情況下有三種解決方案:將紋理拉大,這樣的缺點是紋理顯得非常不清楚,失去了原來清晰的效果,甚至可能變形。將目標面分割為多個與紋理大小相似的矩形,再將紋理重復貼到被分割的目標上。這樣做的缺點是不僅浪費了內(nèi)存(需要額外存儲大量的頂點信息),也浪費了開發(fā)人員寶貴的精力。使用合理的紋理拉伸方式,使得紋理能夠根據(jù)目標平面的大小自動重復,這樣既不失去紋理圖的效果,也節(jié)省了內(nèi)存,提高了開發(fā)效率。這種方案在很多情況下無疑是最好的解決辦法,要想實現(xiàn)這種紋理粘貼方式,只需要做以下兩方面工作:(1)將紋理的GL_TEXTURE_WRAP_S與GL_TEXTURE_WRAP_T屬性值設置為GL_REPEAT而不是GL_CLAMP_TO_EDGE。(2)設置紋理坐標時紋理坐標的取值范圍不再是0~1,而是0~n,n表示希望紋理重復的次數(shù) 吳亞峰 3D游戲開發(fā)技術詳解與典型案例[M].北京::P170–P171。在本論文的工程開發(fā)中,就是使用了第三種解決方案。/** 獲得紋理圖ID*/private int initTexture(GL10 gl, Bitmap bitmap) { int textures[] = new int[1]。 (1, textures, 0)。 // 獲得未使用的紋理對象名稱 int currentTextureId = textures[0]。 (, currentTextureId)。//創(chuàng)建和使用紋理對象 (, , )。// 指定放大縮小過濾方法 (, , )。 (, , )。 (, , )。 (, 0, bitmap, 0)。 return currentTextureId。 } 第3章 開發(fā)模擬3D 主題樣式 說明與概述 模擬3D主題樣式,模擬3D主題樣式實現(xiàn)的效果是通過取得前后兩個子視圖的圖像,根據(jù)觸摸點的x坐標,在屏幕上以固定的夾角、不同的視覺方向來繪制兩幅圖像,從而模擬真實世界的3D效果。因此,實現(xiàn)上述效果的主要難點在于:如何在同一屏幕中繪制這兩幅圖像。 解決方案在繪制圖像之前,必須獲取圖像,目前要獲取的圖像是Workspace每個子視圖的Bitmap圖像。首先,由于Workspace中每個子視圖都有可能不同,而且隨時可能發(fā)生變化(如:用戶在子視圖中增加了圖標等),因此必須計算出要獲取的是Workspace中的哪個子視圖圖像,然后獲取特定子視圖圖像。private void calculateRotate() {……省略部分代碼/** * 依據(jù)第一次手勢移動的方向,判斷轉(zhuǎn)屏時需繪制的兩個圖像(View)即屏幕。 */ if (!isGetPage) { if (mdirection == DIR_RIGHT) { page1 = (currentScreen + screenCount 1) % screenCount。 page2 = currentScreen。} if (mdirection == DIR_LEFT) { page1 = currentScreen。 page2 = (currentScreen + 1) % screenCount。} isGetPage = true。 } /** 轉(zhuǎn)屏期間,一次獲得圖像便可以 */ if (!isGetBitmap) { isGetBitmap = true。 wallpaperDrawable = () .getFastDrawable()。 (page1).setBackgroundDrawable(wallpaperDrawable)。 (page2).setBackgroundDrawable(wallpaperDrawable)。 /*** 獲得workspace下的相應直接子View圖像,即屏幕截圖 */ (page1).buildDrawingCache()。 bitmaps[0] = (page1).getDrawingCache()。 (page2).buildDrawingCache()。 bitmaps[1] = (page2).getDrawingCache()。 }……省略部分代碼}然后,調(diào)用Workspace的invalidate()方法,觸發(fā)其重繪屏幕。即觸發(fā)其調(diào)用dispatchDraw(Canvas)方法 Workspace的dispatchDraw(Canvas)方法繼承自ViewGroup,負責ViewGroup的重繪。當方法dispatchDraw(Canvas)檢測到當前的觸摸狀態(tài)為SCROLLING時,就立即調(diào)用自定義方法startRotate(Canvas, float)。此方法定義了如何在屏幕上繪制固定的夾角、不同的視覺方向的兩幅圖像。/** * 轉(zhuǎn)屏時, */ private void startRotate(Canvas canvas, float x) { …… 省略部分代碼 doDraw(canvas, bitmaps[0],new float[] { 0, 0, width, 0, width, height, 0, height }, new float[] { 0, height * (1 / value), x, 0, x, height, 0, height * (6 / + value) })。 doDraw(canvas, bitmaps[1], new float[] { 0, 0, width, 0, width, height, 0, height }, new float[] { x, 0, width, height * (1 / + value), width, height * (63 / value), x, height })。 …… 省略部分代碼 } private void doDraw(Canvas canvas, Bitmap bp, float src[], float dst[]) { ()。 (src, 0, dst, 0, 1)。 (mMatrix)。 (bp, 0, 0, null)。 ()。 }其中,doDraw()方法包含了模擬3D效果的核心代碼,它定義了如何利用矩陣來修改圖像的大小、方向等。mMatrix是類中定義的矩陣對象,它能對多邊形進行各種的變形。在上述代碼中,mMatrix把圖像看做一個矩形,源矩形四個點的二維坐標存儲在src浮點型數(shù)組中,而目標矩形四個點的二維坐標存儲在dst浮點型數(shù)組中,mMatrix依據(jù)源矩形和目標矩形的變化規(guī)則,在屏幕中源圖像就被繪制成目標圖像(即方向、大小等都改變后的圖像)。 優(yōu)化方案由于模擬3D效果需要對圖像進行處理,而cpu進行圖像處理時耗時較多,占用資源也較多。因此,需要對此部分代碼邏輯進行相應的優(yōu)化。在整個轉(zhuǎn)屏階段,只涉及Workspace中的兩個特定子視圖而已。因此,沒必要在每次轉(zhuǎn)屏前都獲取Workspace中所有子視圖的圖像。所以,在獲取子視圖圖像時,定義了一個布爾類型的標識量isGetBitmap,用于判斷是否已經(jīng)獲取了圖像,如已獲取,則不再獲取圖像。因此,即使每次轉(zhuǎn)屏calculateRotate()方法會被多次調(diào)用,但只一次性獲取了兩幅圖像,之后不再獲取,減少了cpu的計算量和內(nèi)存的占用量。 第4章 開發(fā)Opengl ES 3D主題樣式 說明與概述 Opengl ES 3D主題樣式 Opengl ES 3D主題樣式 Opengl ES 3D主題樣式如上三圖是Opengl ES 3D主題樣式,Opengl ES 3D主題樣式實現(xiàn)的效果是當用戶進行轉(zhuǎn)屏時,Launcher使原有的視圖全部隱藏,并進入使用OpenGL ES繪制的3D場景。該3D場景獲取了Workspace中每個子視圖的緩存圖像(假設有N個視圖),把N幅圖像繪制在地板上N棱柱的側(cè)面,并使用鏡像技術繪制地板,使N棱柱的每個側(cè)面在地板上都有倒影。其實現(xiàn)的關鍵點在于:如何熟練地使用數(shù)學知識快速準確地計算出場景中每個點的三維坐標,并使用OpenGL ES知識快速地繪制場景中的每個元素;難點在于:如何使用鏡像技術繪制地板,使N棱柱的每個側(cè)面在地板上都存在倒影。 解決方案正如上面三幅圖所示,場景中共有三大場景元素:藍白色立方體及其倒影,地板,附有不同圖像的N棱體及其倒影。 坐標計算藍白色立方體及地板的坐標計算都十分簡單,在這里不一一闡述,讀者可查看具體的工程代碼。而如何獲得棱體側(cè)面中每幅圖像四個點的坐標值是坐標計算中最大的難題。目前有兩種解決方案,如下: 方案一該方案思路依據(jù)是正N棱體的橫截面是一個正N邊形,正N邊形的每個頂點一定在同一個圓上,因此只要確定了該圓的圓心和半徑以及正N棱體的高度,就可以確定整個N棱體上所有點的坐標。首先,給定浮點型常量RADIUS定義圓的半徑。然后,依據(jù)傳遞過來的圖像數(shù)組的長度(即圖像數(shù)量N)計算出每幅圖像頂點的xz坐標。其中計算公式如下:X = RADIUS * SIN( 360 * (n 1) / N);Z = RADIUS * COS(360 * (n – 1 / N));注:RADIUS為圓的半徑;N為圖像數(shù)量;n為位于同一圓中的頂點序數(shù)(從1開始計算),如第一幅圖的左頂點序數(shù)為1,第三幅圖的右頂點為6。而每幅圖像的下頂點Y坐標的值都為零,即Y = 0;上頂點Y坐標的值都等于N棱體的高度,即Y = HEIGHT;注:HEIGHT為N棱體的高度。最終,N棱體側(cè)面中的每幅圖像的三維坐標全部確定下來了。360 * (n
點擊復制文檔內(nèi)容
教學教案相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1