Android 3D 遊戲學習筆記(4)-光源

來源:互聯網
上載者:User

小滿(bill man)個人原創,歡迎轉載,轉載請註明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man

本篇開始介紹android 3d的opengl es中的光照基本知識,在android的java開發中,使用gl.glEnable(GL10.GL_LIGHTING)開啟光源,但是,這裡有一點需要指出的是,如果我們只是添加了這句話而不進行其它設定的話,那麼這句話起不到他應有的效果,也就是說我們不會看到光照的效果。相對而言,關閉光源則相對簡單,直接在句子裡加入如下這句就可以了:gl.glDisable(GL10.GL_LIGHTING)。

在opengl情境中包含8個光源,分別是GL_LIGHT0到GL_LIGHT7,它們可以是不同的顏色。和開啟光照一樣,如果只是啟動了某燈之後如果不進行其它設定,同樣達不到開燈的效果。

Opengl es中使用glLightfv的方法來設定光的性質。

首先介紹如何設定定向光線,定向光線就是平行的光源,我們可以認為我們的光照的光線是平行的。就是同過glLightfv設定。此函數有四個參數,第一個參數就是GL_LIGHT0到GL_LIGHT7,第二個參數表明是定向光線,應該設定為GL_POSITION,第三個參數是一個float類的數組,這個數組由四個部分組成,前三個表示光方向的向量,最後一個應該設定為0表示這是個定向光線。最後一個參數表示第一個數值在數組中的位移量

定位光是從某一位置上散射出來的光源,同樣是通過glLightfv來設定。第一個參數就是GL_LIGHT0到GL_LIGHT7。第二個參數參數表明是定位光,和定位光一樣,也使用GL_POSITION,第三個參數是不同的,數組前三個位置是給定座標點和原點之間的向量,最後一個參數定位量設定為1。最後一個參數表示第一個數值在數組中的位移量

設定環境光線的時候,第一個參數還是GL_LIGHT0到GL_LIGHT7。第二個參數,環境光線設定為GL_AMBIENT,第三個參數的數組的四個元素是R,G,B,A四個色彩值,最後一個參數設定為0,表示第一個色彩通道值在數組中的位移量。

設定散射光的時候,第一個參數還是GL_LIGHT0到GL_LIGHT7。第二個參數,環境光線設定為GL_DIFFUSE,第三個參數的數組的四個元素是R,G,B,A四個色彩值,最後一個參數設定為0,表示第一個色彩通道值在數組中的位移量。

鏡面反射光是指光源來自一個特定的方向,並且傾向於從表面向某個特定的方向反射。設定鏡面反射光的時候,第一個參數還是GL_LIGHT0到GL_LIGHT7。第二個參數,環境光線設定為GL_SPECULAR,第三個參數的數組的四個元素是R,G,B,A四個色彩值,最後一個參數設定為0,表示第一個色彩通道值在數組中的位移量

參考自Android 3d 遊戲開發技術詳解與典型案例,如有錯誤之處,希望大家多多指正

下一篇寫一下法向量及材質

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.