立方体映射(cube-map)纹理是一种特殊类型的纹理,用于环境映射,使用一组图像并把他们作为立方体的面。立方体映射的6个面用正方形并且大小相同的6个子纹理表示。要从立方体纹理中采样的时候,使用的纹理坐标是3维,并且被看做来自原点的方向!方向指向用来读取纹理的立方体映射表面的位置。在这里例子中,有关于环境映射的代码,主要思想是通过观察向量和表面的法向量反射来确定采样的纹理坐标。 通过将一个新的纹理名绑定到GL_TEXTURE_CUBE_MAP纹理目标,然后调用glTexStorage2D()以GL_TEXTUR_CUBE_MAP作为参数为立方体纹理映射分配储存空间,这个调用将为立方体纹理映射的所有6个面分配内存。分配内存后,立方体纹理映射用6个特殊的目标集合表示,分别是:GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z.或者调用glTexImage2D()以6个特殊标识符分别分配6个面的内存,设置数据。 for (int face = 0; face < 6; face) { glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X face, level, image->internalFormat, image->mip[level].width, image->mip[level].height, 0, image->format, image->type, ptr image->sliceStride * face); }GL_TEXTURE_CUBE_MAP_POSITIVE_X... 是6个连续的整数。glEnable( GL_TEXTURE_CUBE_MAP_SEAMLESS ):开启GL_TEXTURE_CUBE_MAP_SEAMLESS在天空盒子的边缘将对两个交界面进行采样混合,否则边缘将采用单边像素,会出现明显的裂缝。实例代码:例子代码中实现了天空盒子和环境映射。在关键地方有简单的注释。
推荐整理分享OpenGL 学习笔记-2015.4.18——立方体纹理映射-天空盒子-环境映射(opengl learning),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:opengl教程视频,opengl教程48讲,opengl learning,opengl基础知识,opengl教程48讲,opengl基础教程,opengl基础教程,opengl基础教程,内容如对您有帮助,希望把文章链接给更多的朋友!
运行效果:
Android OpenGL ES向导学习笔记(扫盲专用) Android目前支持下面几个版本的OpenGLESAPI:OpenGLES1.0和1.1:Android1.0和更高的版本支持这个API规范。OpenGLES2.0:Android2.2(API8)和更高的版本支持这个API规范。
[置顶] 关于在vs中配置opengl红宝书第八版环境 本人刚开始学习opengl,买了一本opengl红宝书第八版,第一个例子研究了一段时间终于可以运行了,不知道有没有童鞋跟我遇到一样的问题。下面说说我
OpenGL--阴影 理论基础阴影:就是我们所说的影子,其实现原理其实就是把场景渲染了两次,第一次是把相机放到光源位置渲染场景,然后存储渲染的深度信息到一