zoukankan      html  css  js  c++  java
  • 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代码编写)

     效果展示

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

     (效果展示)

     

  • 相关阅读:
    人脸Pose检测:ASM、AAM、CLM总结
    AI:AI是什么?
    AI不与人为敌
    CMMI评估流程
    AI:恐怖谷理论的陷阱
    Christopher G. Atkeson 简介
    QtUI设计:设置控件透明
    QT设计UI:QT模式对话框打开文件
    SLAM:(编译ORB)fatal error LNK1181: 无法打开输入文件“libboost_mpi-vc110-mt-1_57.lib”
    error C3859: 超过了PCH的虚拟内存范围;请使用“-Zm33”或更大的命令行选项重新编译
  • 原文地址:https://www.cnblogs.com/feng-sc/p/5693495.html
Copyright © 2011-2022 走看看