OpenGL关于glStencilFuncSeparate()和glStencilFunc()函数的 ...
文章推薦指數: 80 %
glStencilFunc()函数是OpenGL提供的对模板缓冲区进行控制的命令,这是OpenGL2.0之前使用的函数,其函数原型为void glStencilFunc(GLenum func, ...
OpenGL关于glStencilFuncSeparate()和glStencilFunc()函数的区别
yangyong0717
于 2017-10-2216:58:51 发布
1636
收藏
1
分类专栏:
OpenGL学习
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yangyong0717/article/details/78311210
版权
OpenGL学习
专栏收录该内容
15篇文章
4订阅
订阅专栏
glStencilFunc()函数是OpenGL提供的对模板缓冲区进行控制的命令,这是OpenGL2.0之前使用的函数,其函数原型为
voidglStencilFunc(GLenumfunc,GLintref,GLuintmask).
func指定比较函数,它指定了测试通过的条件,其取值可以是:(为方便表示,参考值为refValue,缓冲区值bufferValue)
GL_NEVER 总是不通过测试GL_ALWAYS 总是通过测试GL_LESS refValue(bufferValue&mask)GL_EQUAL refValue=(bufferValue&mask)GL_NOTEQUAL refValue/=(bufferValue&mask)
在这里“通过”的意思指的是,我们在将图元绘制到帧缓冲区的时候在片段进行测试的时候是可以完全透过去的,否则的话这个片段就无法绘制到对应的颜色帧缓冲区,那么我们所绘制的内容也就显示不出来。
通过这种控制方法来控制显示,其实这种操作在我们实际的生活中也是很常见的,例如给汽车喷漆,盖章(只会显示刻了的内容)。
ref指定参考值的大小。
mask指定掩码,只在掩码为1的位上进行比较,控制参考值的哪些位和缓冲区进行比较。
glStencilFuncSeparate()函数OpenGL2.0以后新增的函数,其函数原型为
voidglStencilFuncSeparate(GLenumface,GLenumfunc,GLintref,GLuintmask).
和 glStencilFunc()函数的不同是可以指定几何图形进行进行模板测试,位于多边形的哪个面。
其枚举值可以是GL_FRONT,GL_BACK,GL_FRONT_AND_BACK.
其它的参数两个函数表示的含义相同。
yangyong0717
关注
关注
0
点赞
踩
0
评论
1
收藏
打赏
扫一扫,分享内容
点击复制链接
专栏目录
OpenGL关于glStencilFuncSeparate()和glStencilFunc()函数的区别讲解
08-26
今天小编就为大家分享一篇OpenGL关于glStencilFuncSeparate()和glStencilFunc()函数的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
《高效学习OpenGL》之混合glBlendFunc(),glBlendFuncSeparate(),glBlendEquation(),glBlendEquationSeparate()
虚幻社区
02-21
9698
1.源因子和目标因子
voidglBlendFunc(GLenumsfactor,GLenumdfactor);
//控制被处理片段(源片段)的颜色值如何与已经存储在帧缓冲区的像素(目标像素)的颜色值进行组合
//参数sfactor表示如何计算源混合因子,dfactor表示如何计算目标混合因子
glBlendFuncSeparate(GLenum
参与评论
您还未登录,请先
登录
后发表或查看评论
GLES2.0中文API-glStencilMask
flycatdeng的专栏
11-27
1331
名称
glStencilMask-控制模板平面中各个位的正面和背面写入
C规范
voidglStencilMask(GLuintmask);
参数
mask
指定位掩码以启用和禁用模板平面中各个位的写入。
最初,mask全是1。
描述
glStencilMask控制模板平面中各个位的写入。
掩码的最低有效n位,其中n是模板缓冲区中的位数,指定掩码。
如果掩码中出现1,则可以写入模...
模版测试Stencil简介,及在Unity中的应用
关于程序员的故事
03-15
568
1什么是模版测
首先了解图形渲染管线,如下图:
模版测试是GPU渲染流水线中的一个环节,在片元着色器之后的逐片元操作过程中执行。
在透明度之后,深度测试之前。
模版测试通过模版值进行相应操作,默认的模版值是0,是范围0-255的8位数。
模版测试通过比较操作来决定片元是否渲染,以及如何更新模版值。
参考值Ref和当前模版值Mask...
高级OpenGL之模板测试
dtwd886的博客
09-18
239
和深度测试一样,对模板缓冲应该通过还是失败,以及它应该如何影响模板缓冲,有一定控制。
一共有两个函数能够用来配置模板测试:glStencilFunc和glStencilOp
glStencilFunc(GLenumfunc,GLintref,Gluintmask)一共包含三个参数:
func:设置模板测试函数。
用于比较已储存的模板值上和glStencilFunc函数的ref值上。
可用的...
GLES2.0中文API-glStencilFunc、glStencilFuncSeparate
flycatdeng的专栏
11-28
644
名称
glStencilFunc-设置模板测试的前后功能和参考值
glStencilFuncSeparate-设置模板测试的前端和/或后端功能和参考值
C规范
voidglStencilFunc( GLenumfunc,
GLintref,
GLuintmask);
voidglStencilFuncSeparate( GLenumfa...
《高效学习OpenGL》之模板测试glStencilFunc(),glStencilOp()
虚幻社区
03-03
6126
启用模板测试:
glEnable(GL_STENCIL_TEST);
设置模板测试所使用的比较函数(func),参考值(ref)和掩码(mask):
glStencilFunc(GL_EQUAL,0x1,0x1);
voidglStencilFunc(GLenumfunc,GLintref,GLuintmask);
//默认情况下,func是
GLES2.0中文API-glStencilMaskSeparate
flycatdeng的专栏
11-27
328
名称
glStencilFuncSeparate-控制模板平面中各个位的正面和/或背面写入
C规范
voidglStencilMaskSeparate( GLenumface,
GLuintmask);
参数
face
指定是否更新前和/或后模板写掩码。
三个符号常量有效:GL_FRONT,GL_BACK和GL_FRONT_AND_BACK。
mask
指定...
GLES3.0中文API-glStencilFunc、glStencilFuncSeparate
MSK1111的博客
02-11
99
名称
glStencilFunc-设置模板测试的前后功能和参考值
glStencilFuncSeparate-设置模板测试的前端和/或后端功能和参考值
C规范
voidglStencilFunc(GLenumfunc,
GLintref,
GLuintmask);
voidglStencilFuncSeparate(GLenumface,
GLenumfunc...
opengl模板测试glStencilOpglStencilFunc
weixin_34068198的博客
05-30
167
下面来设置蒙板缓存和蒙板测试。
首先我们启用蒙板测试,这样就可以修改蒙板缓存中的值。
下面我们来解释蒙板测试函数的含义:
当你使用glEnable(GL_STENCIL_TEST)启用蒙板测试之后,蒙板函数用于确定一个颜色片段是应该丢弃还是保留(被绘制)。
蒙板缓存区
中的值与参考值ref进行比较,比较标准是func所指定的比较函数。
参考值和蒙板缓...
OpenGL模板缓冲区---StencilBuffer
热门推荐
Frank的专栏
04-12
1万+
前言
VS2012下基于GlutOpenGLGL_STENCIL_TEST示例程序:
xuela-net
06-25
74
模板测试是把像素存储在模板缓冲区的值与一个参考值进行比较。
根据测试的结果,对模板缓冲区中得这个值进行相应的修改。
Note:模板测试只有在存在模板缓冲区的情况下才会执行,如果不存在模板缓冲区,模板测试能够通过。
模板测试最常用的用途就是屏蔽掉屏幕中的一些不规则区域,避免在这些区域中进行绘图。
模板测试过程:
(1)如果使用glut工具包(或者freeglut),要这样进行指定:
...
OpenGLES学习教程(十三)Stencil_TEST(模板缓冲测试)
HelloCaptain
11-18
5368
模板缓冲测试,是指 将模版缓冲区中的值 与 一个参考值 进行比较,根据比较的结果,来对缓冲区中的值进行修改。
进而决定该片段是否有效。
在应用中的体现就比如:Unity中的Mask。
glStencilFuncSeparate
Jackery'sSpecialColumn
06-21
436
https://www.khronos.org/opengl/wiki/GLAPI/glStencilFuncSeparateglStencilFuncSeparate: setfrontand/orbackfunctionandreferencevalueforstenciltestingContents [hide] 1FunctionDefinition2Descri
OpenGL模板测试
痞子龙3D编程
01-06
7102
模板测试 模板测试是所有OpenGL测试中比较复杂的一种。
首先,模板测试需要一个模板缓冲区,这个缓冲区是在初始化OpenGL时指定的。
如果使用GLUT工具包,可以在调用glutInitDisplayMode函数时在参数中加上GLUT_STENCIL,例如:
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_STENCIL);
在Windows操作系统中,即使没有明确要求使用模板缓冲区,有时候也会分配模
OpenGL学习脚印:模板测试(stenciltesting)
王定桥的专栏
08-08
1万+
写在前面
上一节介绍了深度测试,本节继续学习一个高级主题-模板测试(stenciltesting)。
模板缓冲同之前介绍的颜色缓冲、深度缓冲类似,通过它我们可以实现很多的特效,例如轮廓、镜面效果,阴影效果等。
本节示例程序均可以从我的github下载。
通过本节可以了解到
模板缓冲的作用
模板缓冲的使用方法-简单的矩形模板
模板缓冲实现的outline和refleciton效果
模板缓冲的作用上一节介
OpenGL:模板缓冲区
Augusdi的专栏
03-04
7187
相信大家有些人对OpenGL的模板缓冲区不是很理解,包括我最开始也是,OpenGL的模板缓冲区其实就是采用过滤的技术来控制那些颜色可以绘制,那些不能进行绘制。
这里的过滤技术也就是我们的一个控制方法,主要体现在如下两个函数glStencilFunc(GLenumfunc,GLintref,GLuintmask)和glStencilOp(GLenumfail,GLenumzfail,GLe
webgl——混合与模板测试
srk19960903的博客
06-29
2139
今天研究了一个混合与模板测试相结合的案例,这里做以总结。
案例中一个篮球在地板上不断弹起并且落下,这里主要涉及到了两项技术:混合与模板测试。
首先篮球在地板上反射出来的镜像篮球就是通过混合技术实现的,为了让镜像体在运动脱离地板时消失,实现真实的效果,还需要加入模板测试。
首先介绍他们的绘制顺序
1.开启模板测试,关闭深度检测
2.绘制实体地板
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
yangyong0717
CSDN认证博客专家
CSDN认证企业博客
码龄6年
暂无认证
73
原创
11万+
周排名
125万+
总排名
55万+
访问
等级
5043
积分
93
粉丝
328
获赞
41
评论
601
收藏
私信
关注
热门文章
Unity3D中[SerializeField]特性的使用
69280
Unity获取物体自身坐标轴的方向以及沿着该方向运动的方法
46196
Unity3D中Button的按钮点击事件
44356
C++堆和栈的区别和联系
17754
Eclipse无法导入某些包的解决方案
17634
分类专栏
Unity3d学习
26篇
C#学习
4篇
Java学习
23篇
OpenGL学习
15篇
计算机图形学学习
8篇
C++学习
16篇
计算机图像处理
算法之美
4篇
TCP/HTTP
1篇
设计模式
1篇
QT学习
JVM
1篇
MySQL学习
Maven学习
1篇
最新评论
Unity获取物体自身坐标轴的方向以及沿着该方向运动的方法
csake:
应该要在指定位置加触发
Unity获取物体自身坐标轴的方向以及沿着该方向运动的方法
温良雨:
请问沿着自身的轴移动到指定位置怎么写呢
Eclipse关于创建子包,总是子包与父包是并列的关系?
m0_54673574:
为什么我的就不行呢
关于JAVA_HOME路径修改之后,JDK的版本依然不更改的问题
Keep_csdring:
谢谢大佬,Oraclejdk11的路径比我设置的高,把jdk8放到oracle路径前就解决了
Java的外部类为什么不能使用private、protected进行修饰
陈赖赖要努力:
good
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
为什么Maven的很多命令前面都有-D参数?
【算法第四版】2.5.2练习题答案组合词输出
排序算法-堆排序的详细解释
2019年1篇
2018年5篇
2017年93篇
2016年2篇
目录
目录
分类专栏
Unity3d学习
26篇
C#学习
4篇
Java学习
23篇
OpenGL学习
15篇
计算机图形学学习
8篇
C++学习
16篇
计算机图像处理
算法之美
4篇
TCP/HTTP
1篇
设计模式
1篇
QT学习
JVM
1篇
MySQL学习
Maven学习
1篇
目录
打赏作者
yangyong0717
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:--)
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值
延伸文章資訊
- 1glStencilFunc 函式(Gl) - Win32 apps | Microsoft Docs
GlStencilFunc 函數會設定樣板測試的函數和參考值。 ... void WINAPI glStencilFunc( GLenum func, GLint ref, GLuint mas...
- 2Stencil testing - LearnOpenGL
The glStencilFunc (GLenum func, GLint ref, GLuint mask) has three parameters: func : sets the ste...
- 3模板测试
但是 glStencilFunc 只描述了OpenGL对模板缓冲做什么,而不是描述我们如何更新缓冲。这就需要 glStencilOp 登场了。 void glStencilOp(GLenum s...
- 4OpenGL关于glStencilFuncSeparate()和glStencilFunc()函数的 ...
glStencilFunc()函数是OpenGL提供的对模板缓冲区进行控制的命令,这是OpenGL2.0之前使用的函数,其函数原型为void glStencilFunc(GLenum func,...
- 5C++ (Cpp) glStencilFunc Examples - HotExamples
C++ (Cpp) glStencilFunc - 30 examples found. These are the top rated real world C++ (Cpp) example...