本文总结如何在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代码编写)
下图中,咱们展现了经过调整光照输入强度以及光照颜色,测试环境关照模型的实际显示效果:
(效果展现)