OpenGL阴影图

  • OpenGL阴影图简介
  • 源代码剖析
  • 主要源代码

OpenGL阴影图简介

在上一课中,我们学习了阴影显示方法的基本原理,并了解了如何将深度渲染到纹理中,然后通过深度缓冲区的采样器将其显示到屏幕上。在本课中,我们将看到如何使用它来显示阴影。

我们已经知道阴影显示分两个阶段进行:第一个场景从光源位置渲染。让我们回想一下 Z 顶点坐标在其中发生的情况:

落入顶点着色器的顶点位置在本地空间中指定。
着色器将位置从本地空间转换为剪辑,然后通过管道转换(如果需要刷新内存,请查看第 12 课)。
栅格生成透视除法(将位置向量除以其 W 元素)。因此,我们从剪辑空间移动到 NDC。在 NDC 空间中,任何进入屏幕的坐标都有 X、Y 和 Z 坐标[-1,1]。过去的一切都会完全被切断。
然后,栅格在帧缓冲区分辨率(例如 800x600、1024x768 等)中显示 X 和 Y 坐标。结果是顶点位置的屏幕空间坐标。
栅格从三角形的 3 个顶点获取这些坐标,并插值这些坐标,以便为进入三角形的每个像素创建唯一坐标。Z 值(在 [0,1] 段中)也具有插值,因此每个像素都有自己的深度。
由于我们在第一次传递中禁用了颜色缓冲区中的渲染,因此不需要分段着色器。深度测试仍在进行中。通过将每个像素的 Z 值与位于屏幕同一点的 Z 值进行比较,我们选择最小值,并

OpenGL 阴影图之二相关推荐

  1. OpenGL(十二)——Qt OpenGL绕着坐标轴旋转多边形

    OpenGL(十二)--Qt OpenGL绕着坐标轴旋转多边形 一.旋转多边形 前两篇介绍了如何绘制多边形,并且给多边形进行上色.本篇介绍如何旋转多边形. 多边形的旋转,在类中增加两个变量来控制这两个 ...

  2. OpenGL入门学习[二] 绘制简单的几何图形

    OpenGL入门学习[二] 本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形 我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念 ...

  3. OpenGL学习之二 -- 初探

    OpenGL学习之二 -- 初探 前言 1. Xcode搭建OpenGL环境 1. 1 搭建步骤 1. 2 写一个最简单的openGL测试代码 1. 3 源码下载 2. 图形API简介 3. Open ...

  4. Android OpenGL ES 学习(二) -- 图形渲染管线和GLSL

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

  5. 【OpenGL】笔记二十九、抗锯齿(MSAA)

    1. 流程 经过之前的教程,我们目前渲染出来的画面已经有了足够的表现力,但是还是有一些缺陷,比如当我们的渲染画面分辨率跟不上屏幕分辨率时,在我们渲染的图形边缘一些比较严重的锯齿效果就会显现: 自然,这 ...

  6. Learn OpenGL (十二):投光物

    平行光 当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行.不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向.当我们使用一个假设光源处于无限远处的模型时,它就被称为定向 ...

  7. 【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )

    文章目录 一.设置线宽度 二.绘制单条线段 GL_LINES 三.绘制多条线段 GL_LINES 四.绘制依次连接的点组成的线 GL_LINE_STRIP 五.绘制圈 GL_LINE_LOOP ( 偶 ...

  8. OpenGL中的二维编程——从简单的矩形开始

    一.OpenGL的组成 图元函数(primitive function)指定要生成屏幕图像的图元.包括两种类型:可以在二维.三维或者四维空间进行定义的几何图元,如多边形:离散实体:位图. 属性函数(a ...

  9. android系统硬件OpenGL 3D移植(二)

    通过前面两篇文章:  http://blog.csdn.net/andyhuabing/article/details/7176049 http://blog.csdn.net/andyhuabing ...

最新文章

  1. 通过网络方式安装linux的五种方法
  2. Android:30分钟弄明白Touch事件分发机制
  3. MYSQL韩文显示正常一法
  4. 睡前一分钟打造完美下半身 - 健康程序员,至尚生活!
  5. 【CodeForces - 371D】Vessels(思维,元素合并,并查集)
  6. 阿里云数据传输服务低价不低质,服务再升级
  7. Laravel核心解读--ENV的加载和读取
  8. python爬虫网页中的图片_Python爬取网页中的图片(搜狗图片)详解
  9. sqoop导出数据|Hive|HDFS和脚本编写
  10. Java内存解析 程序的执行过程
  11. 网络棋牌游戏创造快乐心情
  12. 解决迅雷极速版强制升级-20190715
  13. No matching provisioning profile found: Your build settings specify a provis...
  14. oracle 18c ad登陆,Oracle 18c PSU
  15. linux下编译和安装log4cxx,Linux下log4cxx的安装使用
  16. 用Python实现连续图文识别
  17. freemaker 前端web教程
  18. Keil MDK使用第11篇---keil炫酷颜色主题
  19. CP2K代码分析一:CP2K主程序
  20. 如何通过一张照片来获取ip地址?

热门文章

  1. ant design vue table 高度自适应_很受欢迎的vue前端UI框架
  2. 颜宁发微博“求救” 要投拆造谣公众号
  3. 浅谈道路交通事故车辆安全技术鉴定
  4. Android Studio 使用友盟进行多渠道打包
  5. android国际化语言编码对照表
  6. 使用Python中的Button组件制作按钮
  7. Vue里的ElementUi点击行 如何获取 Table 的行索引
  8. Python 解析log日志
  9. 无网络下imac重装系统
  10. 2022河南萌新联赛第(二)场:河南理工大学(赛后总结)