基于Android平臺的紋理映射分析與實現(xiàn)_第1頁
基于Android平臺的紋理映射分析與實現(xiàn)_第2頁
基于Android平臺的紋理映射分析與實現(xiàn)_第3頁
基于Android平臺的紋理映射分析與實現(xiàn)_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于Android平臺的紋理映射分析與實現(xiàn)摘要:在計算機圖形學中,紋理映射就是使用圖像、函數或者其他數據源來改變物體外表外觀。紋理映射技術是近幾年來開展最快的技術之一,廣泛應用于三維真實感圖形的生成與顯示中。運用紋理映射可以方便地制作真實感圖形而不必花更多的時間去考慮物體的外表細節(jié)。本文在Andrid平臺中,通過對紋理映射原理的分析,利用penglES圖形庫實現(xiàn)了紋理映射效果。關鍵詞:紋理映射;penglES;Andrid引言紋理映射的本質是對三維物體進展二維參數化,即先求得三維物體表而上任一點的二維(u,v)參數值,進而得到該點的紋理值,最終生成三維圖形表而上的紋理圖案。在光滑曲而上添加紋理

2、圖案的核心問題是映射,因此紋理問題可以簡化為從一個坐標系到另一個坐標系的變換。總的來說,紋理映射技術是一種使建立的3D模型更接近現(xiàn)實物體的技術。1紋理映射根本原理紋理生成過程本質上是將所定義的紋理映射為反映某種三維景物外表的屬性與光照明模型及外表幾何有關的各種參數,如外表法向、漫/鏡面反射率等,并參與后續(xù)的光照明計算。二維紋理映射就是從二維紋理平面到三維物體外表的映射。一般二維紋理平面是有范圍限制的,在這個平面區(qū)域內,每點都可用數學函數表達,從而可以離散的別離出每點的灰度值和顏色值,這個平面區(qū)域稱為紋理空間,一般將紋理空間的平面區(qū)域定義在0,1*0,1。紋理映射是確定物體外表一點P在紋理空間中

3、的對應點(u,v),從而紋理空間中的點(u,v)處的紋理值就是物體外表點P的紋理屬性。建立紋理空間與景物空間及景物空間與屏幕空間之間的映射關系:圖1紋理映射景物外表的紋理屬性主要有以下幾種:外表顏色,即外表的漫反射率;鏡面反射分量,即外表的鏡面反射率;透明度;外表法向,即撓動外表法向來產生外表的凹凸紋理;環(huán)境的漫反射和鏡面反射效果;光源強度和色彩分布。根據紋理定義域的不同,可分為而為二維和三維紋理,由于本文是基于Andrid平臺的,考慮到效率和資源問題,主要給出了二維紋理的模型,對三維紋理映射技術就不再討論了。2紋理映射的實現(xiàn)本節(jié)將通過在一個立方體各個面貼上圖片來介紹Andrid平臺下基于pe

4、nGLES的紋理映射有關的內容:定義紋理、控制濾波、說明映射方式、繪制場景,給出頂點的紋理坐標和幾何坐標。首先,我們通過Andrid平臺的penGLES庫來創(chuàng)立一個紋理,并使用圖片來生成一個紋理,過程如下:IntBufferintBuffer=IntBuffer.allate(1);/創(chuàng)立紋理gl.glGenTextures(1,intBuffer);/設置要使用的紋理gl.glBindTexture(GL10.GL_TEXTURE_2D,texture);函數glGenTextures(intn,intBuffertextures)用于通知penGL我們想生成一個紋理的名字。函數glBind

5、Texture(inttarget,inttexture)方法用于通知penGL將紋理名字texture綁定到紋理目的上。在Andrid中我們使用GLUtils中的一個靜態(tài)方法texIage2D(inttarget,intlevel,Bitapbitap,intbrder)來生成一個紋理。過程如下:/生成紋理GLUtils.texIage2D(GL10.GL_TEXTURE_2D,0,GLIage.Bitap,0)通過以上過程,我們便成功地創(chuàng)立了一個紋理。為了能有更好的效果,我們還需要設置在penGL現(xiàn)實圖像時,它放大得比原始紋理大GL_TEXTURE_AG_FILTER或縮小得比原始紋理小G

6、L_TEXTURE_IN_FILTER時penGL所采用的濾波方式。以下過程是我們設置的線性濾波:/設置線性濾波Gl.glTexParaeterx(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_IN_FILTER,GL10.GL_LINEAR);在andrid中可以使用glBindTexture(inttarget,inttexture)方法來綁定紋理。以下過程綁定了上面創(chuàng)立的紋理:Gl.glBindTexture(GL10.GL_TEXTURE_RD_ARRAY);/綁定紋理紋理需要使用glEnablelientState方法來開啟紋理:Gl.glEnablelien

7、tState(GL10.GL_TEXTURE_RD_ARRAY);與之對應的,關閉紋理過程如下:Gl.glDisablelientState(GL10.GL_TEXTURE_RD_ARRAY);為了將紋理正確的映射到四邊形上,必須將紋理的右上角映射到四邊形的右上角,紋理的左上角映射到四邊形的左上角,紋理的右下角和左下角亦是如此。因為,假設映射錯誤的話,圖像顯示時可能上下顛倒,側向一邊或者什么都沒有。下面是我們對立方體的每一個面所設置的紋理映射數據:IntBuffertexrds=IntBuffer.rap(neintne,0.,0,0,0,ne,ne,ne,0,0,0,ne,ne,ne,ne,

8、0,ne,ne,ne,0,0,0,0,ne0,ne,ne,ne,ne,0,0,0,0,0,0,ne,ne,ne,ne,0,ne,0,0,0,0,ne,ne,ne);設置好這些映射數據之后,可以通過glTexrdPinter將紋理綁定到要繪制的物體上。過程如下:Gl.glTextrdPinter(2,GL10.GL_FIXED,0,texrds);最后,將其繪制到屏幕上即可。效果圖2如下列圖:圖2紋理映射效果3完畢語本文通過對紋理映射的根本原理進展了分析,并在Andrid平臺中利用penglES圖形庫對紋理映射技術進展了實現(xiàn)。由于本文利用的是Andrid應用層封裝后的penglES圖形庫,在效率上欠佳,以后的主要工作是通過AndridNDK對penglES進展原生態(tài)開發(fā),進而進步實現(xiàn)效率。參考文獻

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論