OpenGL关于glStencilFuncSeparate()和glStencilFunc()函数的区别讲解
glStencilFunc()
函数是OpenGL提供的对模板缓冲区进行控制的命令,这是OpenGL2.0之前使用的函数,其函数原型为
void glStencilFunc(GLenum func, GLint ref, GLuint mask).
func指定比较函数,它指定了测试通过的条件,其取值可以是:(为方便表示,参考值为refValue, 缓冲区值bufferValue)
- GL_NEVER 总是不通过测试
- GL_ALWAYS 总是通过测试
- GL_LESS refValue < (bufferValue & mask)
- GL_LEQUAL refValue < (bufferValue & mask)
- GL_GREATER refValue > (bufferValue & mask)
- GL_EQUAL refValue = (bufferValue & mask)
- GL_NOTEQUAL refValue /= (bufferValue & mask)
在这里“通过”的意思指的是,我们在将图元绘制到帧缓冲区的时候在片段进行测试的时候是可以完全透过去的,否则的话这个片段就无法绘制到对应的颜色帧缓冲区,那么我们所绘制的内容也就显示不出来。通过这种控制方法来控制显示,其实这种操作在我们实际的生活中也是很常见的,例如给汽车喷漆,盖章(只会显示刻了的内容)。
ref指定参考值的大小。
mask指定掩码,只在掩码为1的位上进行比较,控制参考值的哪些位和缓冲区进行比较。
glStencilFuncSeparate()
函数OpenGL2.0以后新增的函数,其函数原型为
void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask).
和 glStencilFunc()
函数的不同是可以指定几何图形进行进行模板测试,位于多边形的哪个面。其枚举值可以是
GL_FRONT, GL_BACK, GL_FRONT_AND_BACK.
其它的参数两个函数表示的含义相同。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
相关文章
MVVMLight项目Model View结构及全局视图模型注入器
这篇文章主要为大家介绍了MVVMLight项目中Model及View的结构及全局视图模型注入器的使用说明,有需要的朋友可以借鉴参考下,希望能够有所帮助2022-01-01Android APP瘦身shrinkResources使用问题详解
这篇文章主要为大家介绍了Android APP瘦身shrinkResources使用问题详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-11-11Android8.0适配前台定位服务service的示例代码
这篇文章主要介绍了Android8.0适配前台定位服务service的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-07-07详解如何使用Android Studio开发Gradle插件
这篇文章主要介绍了详解如何使用Android Studio开发Gradle插件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-10-10Android利用DownloadManager实现文件下载
这篇文章主要为大家详细介绍了Android利用DownloadManager实现文件下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-08-08
最新评论