opengl - OpenGL 是否有 glStencilMask 的默认值?
问题描述
出于利益考虑,我很好奇 glStencilMask 和 glStencilMaskSeparate (和类似的)是否具有默认值,或者它们是否已定义实现,或者是否未定义。
我认为明智的做法是始终从一开始就设置它们,但我很好奇它们是否只是巧合地“工作”,或者实际上是否设置了默认值。
稍微相关:我记得在某处读过,在 nvidia 卡上您不必设置活动纹理,默认情况下它为零,但 AMD 卡要求您设置它,否则您会得到垃圾结果。这让我想知道这是否是同一件事(模板的东西恰好对我有用,但只是偶然)并且没有设置它我一直在玩危险的游戏,或者如果不是这种情况。
我查看了 OpenGL 规范 [第 17.4.2 节] 以了解这些函数的定义,但无法解决我的问题的答案。
解决方案
的初始状态glStencilMask
被明确指定。最初,掩码全为 1。
OpenGL 4.6 API Core Profile Specification - 17.4.2 缓冲区更新的精细控制;第 522 页:
void StencilMask( uint mask ); void StencilMaskSeparate( enum face, uint mask );
控制将特定位写入模板平面。
掩码的最低有效 s 位,其中 s 是模板缓冲区中的位数,指定一个整数掩码。在此掩码中出现 1 时,写入模板缓冲区中的相应位;出现 0 时,不写入该位。[...]
在初始状态下,整数掩码都是 1,控制深度值和 RGBA 分量写入的位也是如此。
推荐阅读
- angular - Angular 6服务器端渲染(SSR)从组件设置状态代码
- java - 如何在 MongoDB 中聚合来自多个集合的查询结果?
- javascript - 使用 Webpack 4 减少和优化具有两个入口点的捆绑包
- assembly - 我对 A20 线路校验码的理解是否正确?
- c# - 如何访问在方法中创建的实例
- python - Kubernetes:如何使用 python 获取容器的状态和重启?
- python - 按python中的第一个元素重新组合子列表
- reactjs - 如何使用 React 开发登录系统?
- sql - 在 SQL Server 2017 中并行运行存储过程
- sql - 在没有值的表上连接时如何包含列