第三十四章 模板测试总结

片段着色器处理一个片段后,就该模板测试执行了,跟深度测试类似,可能会丢弃片段。被保留的片段会进入深度测试,可能会丢弃更多的片段。
模板测试时根据模板缓冲进行的。一个模板缓冲中,每个模板值是8位的,所以每个像素、片段一共有256种不同的模板值。可以把模板值设置为我们想要的值,
当某一个片段有某一个模板值的时候,可以选择丢弃或保留这个片段。
补充:每个窗口库都需要为你配置一共模板缓冲,但是GLFW自动做了,不需要告诉GLFW来创建一个,但是其他的窗口库可能不会默认创建一个模板库,需要查看库文档。

举例:模板缓冲都清空为0,之后在模板缓冲中使用1填充一个图形,则场景中的片段将会只在片段的模板值为1的时候被渲染。
步骤:
1.启动模板缓冲的写入
2.渲染物体,更新模板缓冲的内容
3.禁用模板缓冲的写入
4.渲染其他物体,根据模板缓冲的内容丢弃特定片段

使用glEnable来启用模板测试,里面参数不一样,使用:GL_STENCIL_TEST
和颜色,深度缓冲一样,需要在每次迭代之前清除模板缓冲:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
和深度测试的glDepthMask函数类似,模板缓冲的是:glStencilMask允许设置一个位掩码,会将写入缓冲的模板值进行与运算,默认情况下设置的位掩码所有位都是1,
不影响输出,但如果设置为0x00,写入缓冲的所有模板值都变成0,与深度测试中glDepthMask(GL_FALSE)是等价的&#

你可能感兴趣的:(OPGENGL,人工智能,计算机视觉,前端)