mirror of
https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git
synced 2025-08-23 04:35:28 +08:00
Update 02 Stencil testing.md
This commit is contained in:
@@ -109,7 +109,7 @@ GL_INVERT | 按位翻转当前的模板缓冲值
|
||||
6. 再次绘制物体,但只在它们片段的模板值不等于1时才绘制。
|
||||
7. 再次启用模板写入和深度测试。
|
||||
|
||||
这个过程将每个物体的片段处的深度缓冲设置为1,当我们想要绘制边框的时候,我们基本上只是在绘制一个放大版本的物体,并且每当模板测试通过的时候,也就是物体的边框的位置,放大的版本将会被绘制。我们基本上使用模板缓冲丢弃了放大版本物体中,位于原本物体片段处的,所有片段。
|
||||
这个过程将每个物体的片段的模板缓冲设置为1,当我们想要绘制边框的时候,我们主要绘制放大版本的物体中模板测试通过的部分,也就是物体的边框的位置。我们主要使用模板缓冲丢弃了放大版本中属于原物体片段的部分。
|
||||
|
||||
所以我们首先来创建一个很简单的片段着色器,它会输出一个边框颜色。我们简单地给它设置一个硬编码的颜色值,将这个着色器命名为<var>shaderSingleColor</var>:
|
||||
|
||||
@@ -195,4 +195,4 @@ glEnable(GL_DEPTH_TEST);
|
||||
|
||||
你看到的物体轮廓算法在需要显示选中物体的游戏(想想策略游戏)中非常常见。这样的算法能够在一个模型类中轻松实现。你可以在模型类中设置一个boolean标记,来设置需不需要绘制边框。如果你有创造力的话,你也可以使用后期处理滤镜(Filter),像是高斯模糊(Gaussian Blur),让边框看起来更自然。
|
||||
|
||||
除了物体轮廓之外,模板测试还有很多用途,比如在一个后视镜中绘制纹理,让它能够绘制到镜子形状中,或者使用一个叫做阴影体积(Shadow Volume)的模板缓冲技术渲染实时阴影。模板缓冲为我们已经很丰富的OpenGL工具箱又提供了一个很好的工具。
|
||||
除了物体轮廓之外,模板测试还有很多用途,比如在一个后视镜中绘制纹理,让它能够绘制到镜子形状中,或者使用一个叫做阴影体积(Shadow Volume)的模板缓冲技术渲染实时阴影。模板缓冲为我们已经很丰富的OpenGL工具箱又提供了一个很好的工具。
|
||||
|
Reference in New Issue
Block a user