OpenGL ES 光照模型之——环境光照(RenderMonkey测试)

概述及目录(版权所有,请勿转载 www.cnblogs.com/feng-sc/)

  本文总结如何在RenderMonkey下做简单的OpenGL ES环境光光照模型测试。

  主要包括如下内容:

  1、使用RenderMonkey创建一个简单的工程

  2、环境关照模型分析及相应输入数据创建

  3、Shader代码编写

  4、效果展示

使用RenderMonkey创建一个简单的工程

  RenderMoney创建一个OpenGL ES渲染工程很简单,大家只需根据下面图片步骤即可创建一个纯色的球体模型渲染工程。

(OpenGL ES模型渲染工程创建)

环境关照模型分析及相应输入数据创建

  环境光被建模为没有起点,也没有方向的类型光,其最大特点为它对场景中所有物体有同等的效果。模型公式如下:

  我们在下面的照片步骤中,我们在RenderMonkey中创建了该光照模型输入数据,以及为球体创建了一张贴图,其中gAnbientColor为环境光照颜色输入,gAmbientStrength为环境光照强度输入,baseMap为文理数据对象,我们为球体添加一张地球表面的图片。

(环境光照模型数据输入及球体贴图文理创建)

Shader代码编写

   一、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;
}

  二、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代码编写)

效果展示

  下图中,我们展示了通过调整光照输入强度以及光照颜色,测试环境关照模型的实际显示效果:

(效果展示)

时间: 2024-10-10 02:25:45

OpenGL ES 光照模型之——环境光照(RenderMonkey测试)的相关文章

OpenGL ES for Android 环境搭建

在Android上运行OpenGL ES程序需要用到GLSurfaceView控件,GLSurfaceView继承自SurfaceView并实现了GLThread,通过OpenGL ES进行绘制. OpenGL ES1.0是基于OpenGL 1.3的,OpenGL ES1.1是基于OpenGL 1.5的.Android1.0和更高的版本支持这个API规范.OpenGL ES 1.x是针对固定硬件管线的. OpenGL ES2.0是基于OpenGL 2.0的,不兼容OpenGL ES 1.x.An

Chapter 1 : OpenGLES 3.0 简介 (1)—— OpenGL ES 简介

OpenGL ES (OpenGL for Embedded Systems 的缩写)是一套在手持设备和嵌入式设备上实现高级3D图形化的应用变成接口(API).OpenGL ES作为图形API在当今的智能机领域占据了主导地位,并且已经将其应用扩展到了台式机.支持OpenGL ES的平台包括iOS.Android.BlackBerry.bada.Linux和Windows.OpenGL ES也支持WebGL——一种实现基于浏览器3D图形化的web标准. 2009年六月,苹果发布了iPhone 3G

Mali GPU OpenGL ES 应用性能优化--测试+定位+优化流程

1. 使用DS-5 Streamline定位瓶颈 DS-5 Streamline要求GPU驱动启用性能测试,在Mali GPU驱动中激活性能测试对性能影响微不足道. 1.1 DS-5 Streamline简介 可使用DS-5 Streamline从CPU和Mali GPU中实时收集性能计数器,然后以图形方式显示这些计数器,其主要功能如下:     ? 收集计数器--从CPU和Mali GPU中     ? 保存收集到的计数器数据以供回放     ? 查看显示GPU活动.GPU活动和Framebu

iOS下OpenGL ES 3.0编程入门(一):构建Hello World环境

OpenGL ES简介: OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机.PDA和游戏主机等嵌入式设备而设计.该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准. OpenGL ES 3.0主要新功能有: 1.渲染管线多重增强,实现先进视觉效果的加速,包括遮挡查询(Occlusion Query).变缓反馈(Transform Feedback)

Android OpenGL ES绘图教程之一 : 构建OpenGL ES 环境

为了在Android应用中使用OpenGL ES绘图,首先必须要创建一个view容器.一个最简单的方法是实现GLSurfaceView和GLSurfaceView.Renderer.GLSurfaceView一个view容器,用来显示OpenGL绘制的图形,GLSurfaceView.Renderer用来控制GLSurfaceView里面图形的绘制.更多的信息,请参考 OpenGL ES 开发向导. GLSurfaceView是将OpenGL ES图形用到应用的一种方式,对于全屏或者接近全屏的图

(转)使用openGL显示图像(一)建立OpenGL ES的环境

编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/environment.html 要在应用中使用OpenGL ES绘制图像,我们必须为它们创建一个View容器.一种比较直接的方法是实现GLSurfaceView类和GLSurfaceView.Renderer类.其中,GLSurfaceView是一个View容器,它用来存放使用OpenGL绘制的图形,而GLSurfaceView.Renderer则用来控制在该

win7下搭建opengl es 2.0开发环境

http://codingnow.cn/opengles/1501.html =================================================================== 1. 下载AMD的OpenGL ES2.0的模拟器 ,下载地址: http://www.opengles-book.com/ESEmulator.2009-04-28-v1.4.APRIL_2009_RELEASE.msi 2. 下载<OpenGL ES2.0 Programming

Android OpenGL ES(十四)gl10方法解析

Android 支持 OpenGL 列表 1.GL 2.GL 10 3.GL 10 EXT 4.GL 11 5.GL 11 EXT 6.GL 11 ExtensionPack 我们将使用 GL10 这个类开始接触 OpenGL,探索3D 领域. javax.microedition.khronos.opengles 接口GL10 上级接口:GL 下级接口:GL11 公共接口GL10继承于GL GL10接口包含了Java(TM)程序语言为OpenGL绑定的核心功能.OES_byte_coordin

[转] iOS OpenGL ES Guide

OpenGL ES 小结 概述 OpenGL ES (Open Graphics Library for Embedded Systems)是访问类似 iPhone 和 iPad 的现代嵌入式系统的 2D 和 3D 图形加速硬件的标准. 把程序提供的几何数据转换为屏幕上的图像的过程叫做渲染. GPU 控制的缓存是高效渲染的关键.容纳几何数据的缓存定义了要渲染的点.线段和三角形. OpenGL ES 3D 的默认坐标系.顶点和矢量为几何数据的描述提供了数学基础. 渲染的结果通常保存在帧缓存中.有两