opengl实现经纹理映射的旋转立方体_《图形编程技术学习》(五十三)环境映射...
一、環(huán)境映射(Environment Mapping)
1.具有光滑表面的物體會反射形成周圍環(huán)境的影像
2.屬于環(huán)境光效果
二、如何實現(xiàn)這種效果
1.光線跟蹤(全局光照技術(shù))可以實現(xiàn)這種效果,但效率太低,無法用于實時程序中。
2.可應(yīng)用環(huán)境映射技術(shù)快速實現(xiàn)之
三、環(huán)境映射(Environment Mapping)
環(huán)境映射是什么,也稱為反射貼圖(Reflection Mapping),把反射對象當(dāng)作一個虛擬眼睛,生成一張?zhí)摂M的紋理圖,然后把該紋理圖映射到反射對象上,得到的圖像就是該場景的一個影像。主要實現(xiàn)的功能是:使物體表面能顯示出真實場景的影響。如上圖所示。
四、環(huán)境映射技術(shù)
相當(dāng)于將整個環(huán)境信息映射到一個中間表面上(球或立方體表面)
(1)將相機放在場景的中心,拍攝/渲染得到環(huán)境的圖像
(2)把上述圖像貼到一個球面或立方體表面上
(3)當(dāng)繪制鏡面物體時,即可從球面或立方體表面上獲得所映射的紋理值。
五、立方體環(huán)境映射
六、一個類似的概念:天空球/天空盒
七、天空盒+環(huán)境映射
八、環(huán)境映射的實現(xiàn)
(1)自動生成紋理坐標
GL_SPHERE_MAP
GL_REFLECTION_MAP
(2)立方體環(huán)境映射
GL_TEXTURE_CUBE_MAP
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIOIN_X,......);
(3)立方體環(huán)境映射
OpenGL中支持立方體紋理貼圖,可以使用下面的語句激活立方體貼圖
glEnable(GL_TEXTURE_CUBE_MAP_EXT);
glDisable(GL_TEXTURE_CUBE_MAP_EXT);
由于立方體貼圖需要執(zhí)行6張圖像紋理,所以可以使用glTexImage2D來指定立方體面的紋理,如果需要創(chuàng)建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.comhttp://web.cse.ohio-state.edu/~wang.3602/courses/cse5542-2013-spring/17-env.pdf?web.cse.ohio-state.edu總結(jié)
以上是生活随笔為你收集整理的opengl实现经纹理映射的旋转立方体_《图形编程技术学习》(五十三)环境映射...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IIC、UART
- 下一篇: 断言(assert)详解