本文總結如何在RenderMonkey下作簡單的OpenGL ES環境光光照模型測試。測試
主要包括以下內容:spa
四、效果展現blog
RenderMoney建立一個OpenGL ES渲染工程很簡單,你們只需根據下面圖片步驟便可建立一個純色的球體模型渲染工程。圖片
(OpenGL ES模型渲染工程建立)ci
環境光被建模爲沒有起點,也沒有方向的類型光,其最大特色爲它對場景中全部物體有同等的效果。模型公式以下:it
咱們在下面的照片步驟中,咱們在RenderMonkey中建立了該光照模型輸入數據,以及爲球體建立了一張貼圖,其中gAnbientColor爲環境光照顏色輸入,gAmbientStrength爲環境光照強度輸入,baseMap爲文理數據對象,咱們爲球體添加一張地球表面的圖片。io
(環境光照模型數據輸入及球體貼圖文理建立)
1、Vertex Shader
咱們爲環境光照模型示例編寫的頂點shader代碼以下。
其中:
matViewProjection:爲RenderMonkey預設的投影矩陣;
rm_Vertex:爲模型定頂點數據輸入;
rm_TexCoord0:爲模型文理座標輸入;
rm_TexCoord:爲咱們向Fragment Shader中輸出的文理座標數據;
//環境光照模型vertex shader示例代碼 1.0 http://www.cnblogs.com/feng-sc/ uniform mat4 matViewProjection; attribute vec4 rm_Vertex; attribute vec2 rm_TexCoord0; varying vec2 rm_Texcoord; void main( void ) { gl_Position = matViewProjection * rm_Vertex; rm_Texcoord = rm_TexCoord0.xy; }
2、Fragment Shader
咱們爲環境光照模型示例編寫的fragment shader代碼以下。
其中:
baseMap:爲模型文理貼圖數據輸入;
gAnbientColor:環境關照顏色輸入;
gAmbientStrength:環境光照強度輸入;
rm_Texcoord:從vertex shader中輸出的通過插值處理的文理座標數據;
//環境光照模型fragment shader示例代碼 1.0 http://www.cnblogs.com/feng-sc/
#ifdef GL_FRAGMENT_PRECISION_HIGH // Default precision precision highp float; #else precision mediump float; #endif uniform sampler2D baseMap; uniform vec4 gAnbientColor; uniform float gAmbientStrength; varying vec2 rm_Texcoord; void main( void ) { vec4 color = texture2D(baseMap,rm_Texcoord); gl_FragColor = color * gAnbientColor * gAmbientStrength; }
最終,通過代碼編譯後,咱們再RenderMonkey的渲染場景中繪製出了一個地球模型對象,以下圖所示:
( Shader代碼編寫)
下圖中,咱們展現了經過調整光照輸入強度以及光照顏色,測試環境關照模型的實際顯示效果:
(效果展現)