OpenGL ES 光照模型之——環境光照(RenderMonkey測試)

 概述及目錄(版權全部,請勿轉載 www.cnblogs.com/feng-sc/)

  本文總結如何在RenderMonkey下作簡單的OpenGL ES環境光光照模型測試。測試

  主要包括以下內容:spa

  一、使用RenderMonkey建立一個簡單的工程
code

  二、環境關照模型分析及相應輸入數據建立orm

  三、Shader代碼編寫對象

  四、效果展現blog

使用RenderMonkey建立一個簡單的工程

  RenderMoney建立一個OpenGL ES渲染工程很簡單,你們只需根據下面圖片步驟便可建立一個純色的球體模型渲染工程。圖片

 (OpenGL ES模型渲染工程建立)ci

 

環境關照模型分析及相應輸入數據建立

  環境光被建模爲沒有起點,也沒有方向的類型光,其最大特色爲它對場景中全部物體有同等的效果。模型公式以下:it

  咱們在下面的照片步驟中,咱們在RenderMonkey中建立了該光照模型輸入數據,以及爲球體建立了一張貼圖,其中gAnbientColor爲環境光照顏色輸入,gAmbientStrength爲環境光照強度輸入,baseMap爲文理數據對象,咱們爲球體添加一張地球表面的圖片。io

 

 

 (環境光照模型數據輸入及球體貼圖文理建立)

 

Shader代碼編寫 

   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代碼編寫)

 效果展現

  下圖中,咱們展現了經過調整光照輸入強度以及光照顏色,測試環境關照模型的實際顯示效果:

 

 

 

 (效果展現)

相關文章
相關標籤/搜索