本章将学习如何使用一个3D纹理来纹理化一个半圆形。这种技术叫做立方体贴图,且我们将使用该技术来学会如何制作一个天空盒子。

立方体贴图通常用于创建一个无限远的环境,比如天空。我们能够使用该技术通过加载一个3D纹理来创建一个天空盒子,并使用该3D图片来纹理化一个半圆并环绕相机。为了让这种错觉持续,天空盒子必须总是以相机为中心环绕,因此我们无论往哪个方向移动多远,我们都不会接近天空盒子。另外一件事就是天空盒子要总是位于深度缓冲后面,所以所有绘制在天空上的东西总会位于天空盒子前面。在我们的视图空间可通过设置Z值为1来实现。我们还会学习通过使用directx纹理工具如何创建一个立方体纹理。一个立方体纹理有6个面,每个轴有两个面(+x,-x,+y,-y,+z,-z每个对应一个)。在文件中,图像会像下面一样被存储。

为了将立方体纹理贴到天空上,实际并不难,我们要做的就是获取到我们当前渲染的像素的位置,并将它转为向量以找到我们将要着色的像素对应的立方体贴图上的纹理元素。下面的图显示2D的一个思路,我们在这使用(u,v)纹理坐标系,但是在3D中,思路是一样的,只是不同的是我们使用3D纹理坐标系(u,v,w)。

D3D11 立方体贴图(天空盒子)相关推荐

  1. Opengl-立方体贴图(天空盒子)

    立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面:一个有纹理的立方体.你可能会奇怪,这样一个立方体有什么用途呢?为什么要把6张纹理合并到一张纹理中,而不是直接使用6个单独 ...

  2. 【Unity Shader】 CubeMap(立方体贴图)

    Unity Shader 立方体贴图 一.介绍CubeMap Shader中对CubeMap采样 Unity中如何制作CubeMap 二.Reflect CubeMap(反射立方体纹理用于环境映射) ...

  3. 使用OpenGL 立方体贴图

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一.OpenGL 立方体贴图 二.使用步骤 1.代码 2.着色器程序 运行结果 注意 源码下载 参考 前言 对于室外3D 场景,通常 ...

  4. LearnOpenGL17——立方体贴图

    什么是立方体贴图 简单来说,立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面,我们知道如果将一张贴图赋给一个立方体模型,那么这个立方体的六个面都显示该贴图,但是对于立方体 ...

  5. LearnOpenGL->立方体贴图

    立方体贴图 立方体贴图 在本节中,我们将讨论的是将多个纹理组合起来映射到一张纹理上的一种纹理类型:立方体贴图(Cube Map). 简单来说,立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都 ...

  6. OpenGL 核心技术之立方体贴图

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  7. OpenGL ES 3. 天空盒 立方体贴图

    大家好,接下来将为大家介绍OpenGL ES 3. 天空盒 立方体贴图. OpenGL ES 立方体贴图本质上还是纹理映射,是一种 3D 纹理映射.立方体贴图所使的纹理称为立方图纹理,它是由 6 个单 ...

  8. OpenGL 入门 17:立方体贴图

    立方体贴图(Cube Map) 立方体贴图是由"上下左右前后"6个2D纹理合并成的一张纹理.与2D纹理使用(u,v)坐标采样不同的是,立方体纹理使用一个方向向量进行采样. 1. 方 ...

  9. dx12 龙书第十八章学习笔记 -- 立方体贴图

    本章讨论:立方体贴图 cube map,即以特殊的方式来运用这种由6个纹理所构成的基本数组.我们可以利用这项技术方便地映射天空纹理或模拟反射. 1.什么是立方体贴图 -- Cube Map 立方体贴图 ...

最新文章

  1. 腾讯 JDK 11 正式开源,高性能、太牛逼啦!
  2. python解码函数_python2和python3的编码encode解码decode函数
  3. 如何优雅的分析 Redis 里存了啥?
  4. Ambari2.7.4+HDP3.1.4.0中配置fair-scheduler
  5. FortiAnalyzer-VM 安装使用
  6. 高性能 HTML5 地铁样式的应用程序中的内容
  7. 革命性新特性 | 单一应用跨多Kubernetes集群的部署与管理
  8. js反混淆还原工具_SATURN反混淆框架
  9. python if break_python_if_else,while,break
  10. codesys raspberry pi_11月7日|Pi第四次减产来袭?4点浅析中文区用户关心的问题
  11. 数据库连接池问题[转]
  12. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(11) - 数据可缓存性控制指令
  13. matlab中未定义与 ‘cell‘ 类型的输入参数相对应的运算符 ‘+‘ 的解决方案
  14. MySQL MHA详解(一)——基本原理
  15. leetcode python 042收集雨水
  16. 惠普台式计算机耳机插口,hp电脑耳机插孔没声音的解决方法
  17. html播放m3u8格式转换,m3u8格式如何播放
  18. 如何有效破解PDF文件的密码?
  19. Redis数据类型及编码
  20. 管中窥豹SPDK RBD bdev模块

热门文章

  1. 浏览器主页被劫持到*.gndh666.top
  2. 大家常见的以ESP32为代表的WIFI、蓝牙双模模块,今天启明云端带来了一款低功耗、距离远的LoRa+蓝牙无线通讯模块WT5105-L1,我们一起看看这款模块在功能上有哪些优势?
  3. 视频点播系统,视频播放器,在线视频点播学习系统毕业设计
  4. Linux/Centos: 开源库uthash第一弹uthash.h
  5. 汽车凸轮轴的拆装过程
  6. AIX smit设置设置能够输入中文
  7. 解决Win10网络重置后WIFI和以太网丢失问题
  8. 记账本系统的功能结构图
  9. HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);出现异常
  10. 研究人员通过监听你的电脑处理器发出的细小声音破解了世界上最困难的加密算法之壹:4096 位 RSA