一、环境映射(Environment Mapping)

1.具有光滑表面的物体会反射形成周围环境的影像

2.属于环境光效果

二、如何实现这种效果

1.光线跟踪(全局光照技术)可以实现这种效果,但效率太低,无法用于实时程序中。

2.可应用环境映射技术快速实现之

三、环境映射(Environment Mapping)

环境映射是什么,也称为反射贴图(Reflection Mapping),把反射对象当作一个虚拟眼睛,生成一张虚拟的纹理图,然后把该纹理图映射到反射对象上,得到的图像就是该场景的一个影像。主要实现的功能是:使物体表面能显示出真实场景的影响。如上图所示。

四、环境映射技术

相当于将整个环境信息映射到一个中间表面上(球或立方体表面)

(1)将相机放在场景的中心,拍摄/渲染得到环境的图像

(2)把上述图像贴到一个球面或立方体表面上

(3)当绘制镜面物体时,即可从球面或立方体表面上获得所映射的纹理值。

五、立方体环境映射

六、一个类似的概念:天空球/天空盒

七、天空盒+环境映射

八、环境映射的实现

(1)自动生成纹理坐标

GL_SPHERE_MAP

GL_REFLECTION_MAP

(2)立方体环境映射

GL_TEXTURE_CUBE_MAP

glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIOIN_X,......);

(3)立方体环境映射

OpenGL中支持立方体纹理贴图,可以使用下面的语句激活立方体贴图

glEnable(GL_TEXTURE_CUBE_MAP_EXT);

glDisable(GL_TEXTURE_CUBE_MAP_EXT);

由于立方体贴图需要执行6张图像纹理,所以可以使用glTexImage2D来指定立方体面的纹理,如果需要创建mipmap纹理,可以使用gluBuild2DMipmaps.代码如下所示:

GLubyte face[6][64][64][3];
for(i = 0;i < 6;i++)
{glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT + i,0,                          //levelGL_RGB8,                    //internal format64,                         //width64,                         //height0,                          //borderGL_RGB,                     //formatGL_UNSIGNED_BYTE,           //type&face[i][0][0][0]);         //pixel data
}

如果使用gluBuild2DMipmaps,可以使用下面的代码片段来代替上面的glTexImage2D:

gluBuild2DMipmaps(GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT, GL_RGB8, 64, 64, GL_RGB, GL_UNSIGNED_BYTE, &face[1][0][0][0]);

参考链接:http://www.twinklingstar.cn/2014/1322/environment-mapping/

拓展链接:

高级OpenGL-06.立方体贴图(Cubemaps)​www.jianshu.com

http://web.cse.ohio-state.edu/~wang.3602/courses/cse5542-2013-spring/17-env.pdf​web.cse.ohio-state.edu

opengl实现经纹理映射的旋转立方体_《图形编程技术学习》(五十三)环境映射...相关推荐

  1. 机器学习实现计算不规则图形面积_《图形编程技术学习》(五十八)用VS实现逐顶点的光照计算...

    这个系列接近尾声了,自己也着急想早点弄完,最近忙着项目的事情,一连几天没有更新, 更新的时候遇到疑点也没有时间细细研究,大抵是囫囵吞枣,这种习惯很不好, 来得容易忘得也容易,到底是纸上得来终觉浅;想着 ...

  2. OpenGL三维图形编程技术(转)

    人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics Library)三维图形库表现尤为突出,它易于使用且功能强大.随着计算机技 ...

  3. OpenGL三维图形编程技术【转】

    一.OpenGL 的发展历史 人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics Library)三维图形库表现尤为突出,它易 ...

  4. java 三维旋转立方体_【转】 CATransform3D 矩阵变换之立方体旋转实现细节

    原文网址:http://blog.csdn.net/ch_soft/article/details/7351896 第一部分.前几天做动画,使用到了CATransform3D ,由于没有学过计算机图形 ...

  5. python图片旋转脚本_封装了深度学习中几个图片数据增强的脚本-python平移、旋转与调整大小...

    文章目录 平移 代码 演示 删除 代码 演示 旋转 代码 演示 平移 代码 可以调整以下的代码,只进行某一方向的平移:也可修改divisor调整平移的比例因子. import cv2 import n ...

  6. qlabel 显示图片后大小不变_图形编程:QT使用scrollarea显示图片的解决方案

    需求: 在界面上点击"显示图片"按钮,会调用scrollarea窗口显示图片,窗口大小能根据图片大小自动调整,但是最大为1024*768,图片过大就要有滚动条来显示 IDE环境: ...

  7. 命令父窗口变颜色_【编程】第五期:Python Tkinter图形化教程03布局之父窗口、pack和LabelFrame...

    这一讲的内容巨多,建议反复观看. 1. LabelFrame 2.父窗口 3.pack布局 首先是控件LabelFrame(好东西) LabelFrame是一个容器,一个盒子,可以当父窗口(所有控件都 ...

  8. python编程技术总结_大数据技术学习之Spark技术总结

    Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合.需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小(大数据库架构中这是 ...

  9. tmooccn达内登录_达内上线技术学习平台TMOOC.CN,由线下反攻线上,O2O是在线教育的出路?...

    3月17日,达内宣布上线达内精品在线平台-- TMOOC.CN,将原有线下的老师.教学和课程资源搬到线上,围绕着IT教育打造一个O2O的技术学习平台. 为什么是一个 O2O 的技术学习平台? TMOO ...

最新文章

  1. ruby安装插件报错
  2. ios xmlrpc
  3. 李开复老师:微博改变一切
  4. haproxy透传用户ip-方法和原理
  5. freeCodeCamp纳什维尔十月聚会回顾
  6. angular6--创建项目
  7. css修改layui的下拉框样式 js_layui,经典模块化前端UI框架,前端菜鸟带你初识栅格。...
  8. 那些天天都在野外钓鱼的人不上班吗,有收入吗?
  9. [转载] python数字类型(一)
  10. Python实现笑脸检测+人脸口罩检测
  11. 基于大数据架构实现景点游客数据分析平台,全国景点游客数据管理系统
  12. MacBook如何设置双面打印
  13. 创业一年半项目经验分享
  14. 浅谈数据监控数据分析
  15. C++ uint8_t
  16. 耳麦没声音,耳麦不能说话
  17. std::tr1::function
  18. 手机加密聊天软件功能文档(基于android系统)
  19. Excel:动态图表展示(点击按钮选择不同的员工名字,自动呈现对应的数据展示)
  20. i春秋_我很简单_解题记录

热门文章

  1. 【2017年第2期】感悟大数据——从数据管理和分析说起
  2. 【LeetCode】跳水板
  3. 【C语言】第二章 信息编码与数据类型 题解
  4. 【数字逻辑设计】Logisim构建四位行波进位加法/减法器
  5. 【Java】模拟分组交换网络的时延、丢包
  6. python-标示符和关键字
  7. MySQL5.7的搭建以及SSL证书
  8. MugLife app是一款可以将静态照片变成3D动画的手机应用
  9. DRBD+keepalived+LAMP+discuz
  10. 给文章添加目录的方法