来自 flyfish|已发表 2020-10-27

深度纹理可以通过两种模式进行采样, 第一种是按传统的纹理采样模式直接采样来获取深度值,这将会返回一个单浮点数vec4 类型的值。也可以使用比较模式(comparison mode) 模式来采样深度纹理。使用比较模式时,我们需要指定一个参考值(reference value) , 该参考值与从深度纹理中采样的深度值进行比较,为了使参考值与采样的深度值进行比较,我们还需要设置一个比较函数(comparison function),比较结果只有R值是比较结果。测试成功,返回 1.0f, 测试失败,返回0.0f.

当使用线性过滤器去采样时,采用结果是由硬件设备的实现来定义的,一般比较模式的返回值的范围是[0 , 1.0]之间, 这种采样方式称为百分比渐进采样方式“percentage Closer Filering”.

如果纹理是归一化的整型值,那么传入的参考值也将被归一化到[0,1]的范围内去匹配纹理值。否则参考值不会被归一化到[0,1]的区间.

使用比较模式需要专门做两方面的设置,首先GLSL中纹理的采样必须是阴影采样器,也就是这种模式专门针对的是阴影的采样,其次激活的深度纹理关联的采样器要开启比较模式。

要将纹理设置成比较模式,需要设置纹理比较模式GL_TEXTURE_COMPARE_MODE 设置成 GL_COMPARE_REF_TO_TEXTURE, 把纹理比较函数 GL_TEXTURE_COMPARE_FUNC 设置成 GL_NEVER, GL_ALWAYS, GL_LESS, GL_LEQUAL, GL_EQUAL , GL_NOT_EQUAL, GL_GEQUAL, GLGREATER 之一, 比较方式:

ref OPERATOR texture

如果设置比较函数为 GL_LESS, 当 参考值 ref 小于 采样的纹素值的情况下,测试通过时, 采样器将会返回非零的值——百分比渐进的采样方式[0,1] 或 0、1 值 。

OpenGL 采样器的比较模式相关推荐

  1. OpenGL Subdivision Modes细分模式的实例

    OpenGL Subdivision Modes细分模式的实例 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <sb7.h> #&l ...

  2. OpenGL学习04_点画模式(点画线)

    viod glLineStipple(GLint factor,GLshort pattern); OpenGL中设置直线的当前点画模式.pattern参数是由1或0组成的16位序列,它们根据需要进行 ...

  3. OpenGL概述(核心模式与立即模式、扩展、OpenGL中的对象)

    1 关于OpenGL的理解 OpenGL本身不是一个API,而是一个规范. OpenGL是一个巨大的状态机(state machine),它是定义OpenGL现在该如何工作的变量的集合. OpenGL ...

  4. OpenGL:颜色索引模式的使用方式

    在OpenGL中,颜色索引模式是不同于RGBA颜色模式的,在这个模式中,数据代表的是一个索引,要得到真正的颜色,还需要去查询索引表.表达式为: glutInitDisplayMode(GLUT_SIN ...

  5. OpenGL纹理映射与环绕模式

    转载自 OpenGL超级宝典笔记--纹理映射 基础过滤 在纹理映射过程中,纹理元素与屏幕上的像素几乎不是一一对应的.一般情况下,在把纹理映射到几何图形的表面上时,我们需要对其进行拉伸或收缩. 根据一个 ...

  6. OpenGL中的着色模式GL_SMOOTH与GL_FLAT

    glShadeModel void glShadeModel ( GLenum mode)是OpenGL1.0提供的接口.作用是设置着色模式. 参数mode可以是GL_SMOOTH(默认值)或GL_F ...

  7. OpenGL学习05_点画模式(点画多边形)

    在默认情况下,填充多边形是用实心模式绘制的.此外,它们还可以使用一种32位×32位的窗口对齐的点画模式.glPolygonStipple()函数用于指定多边形的点画模式. void glPolygon ...

  8. OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?

    OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)? 图形硬件供应商,需要为显示适配器编,编写用户模式显示驱动程序.用户模式显示驱动程序,是由Microsoft Direct3D运行时加 ...

  9. OpenGL Texture Wrap Modes纹理包裹模式的实例

    OpenGL wrapmodes纹理包裹模式 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <sb7.h> #include < ...

最新文章

  1. 王者荣耀中一个英雄是怎么被产生的?
  2. 深度学习实现缺陷检测
  3. 如何设置iframe高度自适应,在跨域的情况下能做到吗?
  4. python接口服务两种方式(被调用、主动推送)
  5. Boost:bind的noexcept成员函数的type <>语法的测试程序
  6. 【英语学习】【WOTD】 logy 释义/词源/示例
  7. linux命令 选项,不点之Linux命令、选项及文件概念
  8. 人人商城小程序消息服务器配置,微擎系统人人商城小程序前端配置教程
  9. 农商行JAVA笔试题_银行笔试题
  10. useRoutes() may be used only in the context of a <Router> component.
  11. 2020秋招腾讯群面场景题:给莫高窟设计一款互联网+产品
  12. 云计算运维:运维人员常用到的11款服务器监控工具
  13. rails parameter permit
  14. 别再用知网下载文献了,这16个国内外好用的论文网站,赶紧收藏起来
  15. 41、Springboot 文件上传 采用Base64方式
  16. C语言小游戏-五子棋
  17. 华东师范大学 软件工程 2020年可信人工智能优秀大学生夏令营机试
  18. HDU 4915 Parenthese sequence DP
  19. 【QT】QT元对象系统
  20. java计算两个时间相差几个月

热门文章

  1. 志愿者(传智杯真题)
  2. 脑机接口科普0013——中枢神经与周围神经
  3. CCIE和HCIE工程师工资一般多少?
  4. 杰理之FCC 认证 PC 工具 FCCAssist_1.5.exe 介绍【篇】
  5. vslam论文5:OpenVSLAM: A Versatile Visual SLAM Framework
  6. 员工奖金需要交税吗_公司发放年终奖需要交税吗?年终奖如何缴纳个人所得税...
  7. Robot Framework(RF)语法与运用初识
  8. 用css固定textarea文本域大小尺寸
  9. 《python深度学习》笔记(十四):指数移动平均值EMA
  10. 关于CPU过热导致主机自行断电重启的解决办法