OpenGL关于glStencilFuncSeparate()和glStencilFunc()函数的 ...

文章推薦指數: 80 %
投票人數:10人

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币套餐、付费专栏及课程。

余额充值



請為這篇文章評分?