OpenGL学习笔记 天空盒(反射,折射)

LearnOpenGL-高级OpenGL-6.天空 立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面:一个有纹理的立方体。 阅读详情

天空盒

先展示一个效果图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j7qGzsyy-1594654641142)(static/天空盒.png)]

多个纹理组合起来映射到一张纹理上的一种纹理类型:立方体贴图(Cube Map)。

简单来说,立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面:一个有纹理的立方体。你可能会奇怪,这样一个立方体有什么用途呢?为什么要把6张纹理合并到一张纹理中,而不是直接使用6个单独的纹理呢?立方体贴图有一个非常有用的特性,它可以通过一个方向向量来进行索引/采样。假设我们有一个1x1x1的单位立方体,方向向量的原点位于它的中心。使用一个橘黄色的方向向量来从立方体贴图上采样一个纹理值会像是这样:

在这里插入图片描述

立方体贴图创建

unsigned int textureID;
glGenTextures(1, &textureID);
//GL_TEXTURE_CUBE_MAP 注意参数
glBindTexture(GL_TEXTURE_CUBE_MAP, textureID);
//和OpenGL的很多枚举(Enum)一样,它们背后的int值是线性递增的,所以如果我们有一个纹理位置的数组或者vector,我们就可以从GL_TEXTURE_CUB
UnityShader学习———天空折射反射 高级纹理之立方体纹理 OpenGL中,透视除法是在顶点着色器运行之后执行的,将gl_Position的xyz坐标除以w分量。我们又从深度测试小节中知道,相除结果的z分量等于顶点的深度值。使用这些信息,我们可以将输出位置的z分量等于它的w分量,让z分量永远等于1.0,这样子的话,当透视除法执行之后,z分量会变为w / w = 1.0。 void main() { TexCoords = aPos; vec4 pos = projection * view * vec4(aPos, 1.0);. 阅读详情

相关推荐

OpenGL天空实战:从零搭建到环境反射效果(附完整代码)

本文详细介绍了如何使用OpenGL实现天空技术,从基础原理到环境反射效果的完整开发流程。通过LearnOpenGL教程风格的代码示例,展示立方体贴图加载、天空渲染技巧以及环境反射着色器的编写方法,帮助开发者快速掌握3D图形开发中的环境渲染核心技术。

weixin_28716181的博客 290

OpenGL 玻璃球包含了折射色散

外国的OpenGL 折射 实例,一个玻璃球,包含了折射、色散

LearnOpenGL-高级OpenGL-6.天空:从基础实现到环境映射实战

本文详细介绍了OpenGL天空的基础实现与环境映射实战技术。从立方体贴图原理到完整实现步骤,涵盖纹理准备、几何体创建、着色器编写及渲染优化,并深入探讨反射/折射效果实现与性能优化技巧,帮助开发者掌握高级OpenGL环境渲染技术。

weixin_29213827的博客 387

openGL三种光照模型 1.Gouraud 着色 2.phong 3.Blinn-Phong反射模型

openGL三种光照模型 1.Gouraud 着色 2.phong着色 3.Blinn-Phong反射模型 这三种光照程序中都有,主程序是一样的,只有着色器不一样

QT+OpenGL反射折射

本篇完整工程见gitee:[QtOpenGL](https://gitee.com/turbolove/qtopengl.git) 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主

turbolove的博客 622

OpenGL反射折射

OpenGL中,反射折射是两个常用的光学效果,本文将介绍如何使用OpenGL实现这两个效果。反射效果主要通过控制材质的属性和使用环境贴图来实现,而折射效果则需要通过控制材质的透明度,以及使用纹理坐标来模拟光线的折射。我们还需要设置两个不同的材质,其中,上表面具有一定程度的透明度,下表面则反映出折射效果。在OpenGL中,我们可以通过控制材质的透明度和纹理坐标,来实现折射效果。在OpenGL中,通过控制材质的反射属性,我们可以实现反射效果。通过这样的方式,我们就可以在OpenGL中实现折射效果了。

BUG?不存在的! 346

OpenGL-9-天空和背景

目录天空天空穹顶实现天空从头开始构建天空使用OpenGL立方体贴图分析矩阵中值的存储 及 mat4转mat3原理环境贴图关于reflect函数补充说明 天空天空穹顶提供了有效且相对简单的方法,用来生成令人信服的地平线景观。 天空 如何为地平线制作纹理? 立方体有 6 个面,我们需要为这些面都添加纹理。 一种方法是使用 6 个图像文件和 6 个纹理单元。 另一种常见(且高效)的方式则是使用一个包含 6 个面的纹理的图像。 使用纹理立方体贴图为立方体添加纹理需要指定适当的纹理坐标。下图展示了纹理

itzyjr的专栏 3607

OpenGL基础37:反射折射

前置:OpenGL基础20:镜面光照 一、反射 不一定所有的光源都是简单的白光,不仅如此,光线也是可以多次反射的,例如一面镜子,可以从中看到远处的风景,一些金属材质的物体表面也会反射周围物体的光 这主要就是着色器的改动,和漫反射以及镜面反射一样,还有一种贴图叫做反射贴图,当然了,是否是贴图只是着色器写法上的问题,有了之前的经验,搞定这个不是问题 反射的计算方式和之前的镜面反射很像,,着色器如下: #version 330 core layout (location = 0) in ve...

加载中... 2246

opengl创建天空实现反射折射的效果

效果图 天空顶点shader attribute vec3 pos; attribute vec2 texcoord; attribute vec3 normal; uniform mat4 M; uniform mat4 P; uniform mat4 V; varying vec3 V_Texcoord; void main() { V_Texcoord=pos;

hb707934728的博客 2588

OpenGL天空框架项目实战(含源码与贴图)

立方体贴图(Cubemap)是一种特殊的纹理类型,由六个二维图像组成,分别对应一个立方体的六个面:+X(右)、-X(左)、+Y(上)、-Y(下)、+Z(前)、-Z(后)。这种结构使得它能够完整地表示围绕某一点的360度全景环境信息。在计算机图形学中,立方体贴图被广泛用于实现环境映射技术,例如天空反射折射以及基于图像的光照(Image-Based Lighting, IBL)等高级渲染效果。其核心优势在于,可以通过一个三维方向向量(vec3)直接采样到对应的纹理颜色值,而无需传统UV坐标。

weixin_32836713的博客 1277

openGL实现天空,使用OpenGL 立方体贴图

1.构建天空的另一种方法是使用OpenGL 纹理立方体贴图。OpenGL 立方体贴图比我们 在上一节中看到的简单方法稍微复杂一点。但是,使用OpenGL 立方体贴图有自己的优点, 例如减少接缝以及支持环境贴图。 2.OpenGL 纹理立方体贴图类似于稍后将要研究的3D 纹理,它们都使用3 个纹理坐标访 问——通常标记为(s, t, r)——而不是我们目前为止用到的两个。OpenGL 纹理立方体贴图 的另一个特性是,其中的图像以纹理图像的左上角(而不是通常的左下角)作为纹理坐标 (0, 0, 0),这通常是混乱产生的源头。

基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(二十二)立方体贴图(天空

Vries的教程是我看过的最好的可编程管线OpenGL教程,没有之一,其原地址如下,https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/06%20Cubemaps/ 关于立方体的详细知识了解请看原教程,本篇旨在对Vires基于visual studio平台的编程思想与c++代码做纯Qt平台的移植,代码移植顺序基本按照原教程顺序,并附加一...

博客 1907

LearnGL - 15.2 - Refraction - 折射效果

文章目录先看看效果折射现象refract 函数的使用Shader 调整my_lighting.glsl添加材质属性添加了着色器信息结构体添加了计算折射的函数提取了着色器函数外部调用References LearnGL - 学习笔记目录 前一篇:LearnGL - 15.1 - Reflection - 反射效果 - 了解了立方体贴图(环境贴图、天空反射效果 这一篇:实现类似折射的效果 本人才疏学浅,如有什么错误,望不吝指出。 扯一些闲话: 前几天和小舅子玩了玩 PS4: 《Hell Driver》

Jave.Lin 的学习笔记 1209

十六、立方体贴图(天空)_天空贴图

/3D纹理为samplerCube类型。Skybox.h文件。

2501_90433715的博客 793

零基础学习OpenGL(八)--立方体贴图、天空、环境映射

                                                                                    立方体贴图        将多个纹理组合起来映射到一张纹理上的一种纹理类型:立方体贴图(Cube Map)。        立方体贴图:一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面:一个有纹理的立方体。之所以使...

jfy307596479的博客 1869

Vulkan_Shader天空原理及源码

天空 一、原理:立方体贴图 我们已经使用2D纹理很长时间了,但除此之外仍有更多的纹理类型等着我们探索。在部分中,我们将讨论的是将多个纹理组合起来映射到一张纹理上的一种纹理类型:立方体贴图(Cube Map)。 简单来说,立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面:一个有纹理的立方体。你可能会奇怪,这样一个立方体有什么用途呢?为什么要把6张纹理合并到一张纹理中,...

qq_35312463的博客 2892

OpenGL天空实战:从零搭建到环境映射(附完整代码)

本文详细介绍了使用OpenGL从零构建天空并实现环境映射的完整实战教程。通过解析立方体贴图原理、编写着色器代码、解决深度测试陷阱,逐步指导开发者实现反射折射效果,并提供了性能优化技巧和完整的LearnOpenGL项目代码,帮助读者快速掌握3D图形渲染的核心技术。

weixin_29279101的博客 218
上一篇: OpenGL学习笔记 帧缓冲
下一篇: OpenGL学习笔记 阴影映射 阴影学习(一)
临桑可以玩狙吗
博客等级 码龄8年 2粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值