opengl实现经纹理映射的旋转立方体_《图形编程技术学习》(五十三)环境映射...
一、环境映射(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.pdfweb.cse.ohio-state.edu
opengl实现经纹理映射的旋转立方体_《图形编程技术学习》(五十三)环境映射...相关推荐
- 机器学习实现计算不规则图形面积_《图形编程技术学习》(五十八)用VS实现逐顶点的光照计算...
这个系列接近尾声了,自己也着急想早点弄完,最近忙着项目的事情,一连几天没有更新, 更新的时候遇到疑点也没有时间细细研究,大抵是囫囵吞枣,这种习惯很不好, 来得容易忘得也容易,到底是纸上得来终觉浅;想着 ...
- OpenGL三维图形编程技术(转)
人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics Library)三维图形库表现尤为突出,它易于使用且功能强大.随着计算机技 ...
- OpenGL三维图形编程技术【转】
一.OpenGL 的发展历史 人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics Library)三维图形库表现尤为突出,它易 ...
- java 三维旋转立方体_【转】 CATransform3D 矩阵变换之立方体旋转实现细节
原文网址:http://blog.csdn.net/ch_soft/article/details/7351896 第一部分.前几天做动画,使用到了CATransform3D ,由于没有学过计算机图形 ...
- python图片旋转脚本_封装了深度学习中几个图片数据增强的脚本-python平移、旋转与调整大小...
文章目录 平移 代码 演示 删除 代码 演示 旋转 代码 演示 平移 代码 可以调整以下的代码,只进行某一方向的平移:也可修改divisor调整平移的比例因子. import cv2 import n ...
- qlabel 显示图片后大小不变_图形编程:QT使用scrollarea显示图片的解决方案
需求: 在界面上点击"显示图片"按钮,会调用scrollarea窗口显示图片,窗口大小能根据图片大小自动调整,但是最大为1024*768,图片过大就要有滚动条来显示 IDE环境: ...
- 命令父窗口变颜色_【编程】第五期:Python Tkinter图形化教程03布局之父窗口、pack和LabelFrame...
这一讲的内容巨多,建议反复观看. 1. LabelFrame 2.父窗口 3.pack布局 首先是控件LabelFrame(好东西) LabelFrame是一个容器,一个盒子,可以当父窗口(所有控件都 ...
- python编程技术总结_大数据技术学习之Spark技术总结
Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合.需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小(大数据库架构中这是 ...
- tmooccn达内登录_达内上线技术学习平台TMOOC.CN,由线下反攻线上,O2O是在线教育的出路?...
3月17日,达内宣布上线达内精品在线平台-- TMOOC.CN,将原有线下的老师.教学和课程资源搬到线上,围绕着IT教育打造一个O2O的技术学习平台. 为什么是一个 O2O 的技术学习平台? TMOO ...
最新文章
- ruby安装插件报错
- ios xmlrpc
- 李开复老师:微博改变一切
- haproxy透传用户ip-方法和原理
- freeCodeCamp纳什维尔十月聚会回顾
- angular6--创建项目
- css修改layui的下拉框样式 js_layui,经典模块化前端UI框架,前端菜鸟带你初识栅格。...
- 那些天天都在野外钓鱼的人不上班吗,有收入吗?
- [转载] python数字类型(一)
- Python实现笑脸检测+人脸口罩检测
- 基于大数据架构实现景点游客数据分析平台,全国景点游客数据管理系统
- MacBook如何设置双面打印
- 创业一年半项目经验分享
- 浅谈数据监控数据分析
- C++ uint8_t
- 耳麦没声音,耳麦不能说话
- std::tr1::function
- 手机加密聊天软件功能文档(基于android系统)
- Excel:动态图表展示(点击按钮选择不同的员工名字,自动呈现对应的数据展示)
- i春秋_我很简单_解题记录