模板测试
【目的】利用本次绘制的物体,产生一个区域,在下次绘制中利用这个区域做一些效果
【步骤】
- 模板缓冲更新:用于创建出一个模板区域,在下一帧再做使用
- 模板测试:用上一帧的模板缓冲,做一些操作
【模板缓冲区】与颜色缓冲区、深度缓冲区类似,模板缓冲区可以为屏幕上的每个像素保存一个无符号整数值(8位二进制,即256十进制)
【模板掩码函数】
glStencilMask(0xFF);
每一位都可以被修改,即启用模板缓冲区的写入glStencilMask(0x00);
每一位都不可以被修改,即禁用模板缓冲写入
【模板测试的函数】什么情况通过模板测试,通过模板测试的像素才会被显示出来
- 掩码值mask和参考值ref值先做与操作
- 再把当前模板中的值stencil与掩码值mask做与操作
- 参考func中的方法是否可以通过
示例:绘制物体轮廓¶
- 开启并设置模板测试条件:只是通过测试,即本次绘制的所有片段都会通过测试并更新模板值
- 绘制物体并更新模板值
- 禁用模板缓冲写入
- 修改模板测试条件:没有模板值得片段才通过测试,这意味着这次绘制会丢掉之前绘制的区域(并不影响上次绘制,只会影响接下来的绘制)