Skip to content

Commit

Permalink
Update 02 Stencil testing.md
Browse files Browse the repository at this point in the history
  • Loading branch information
sanerror authored Feb 28, 2018
1 parent 38d7a80 commit f83a46b
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions docs/04 Advanced OpenGL/02 Stencil testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ GL_INVERT | 按位翻转当前的模板缓冲值
6. 再次绘制物体,但只在它们片段的模板值不等于1时才绘制。
7. 再次启用模板写入和深度测试。

这个过程将每个物体的片段处的深度缓冲设置为1,当我们想要绘制边框的时候,我们基本上只是在绘制一个放大版本的物体,并且每当模板测试通过的时候,也就是物体的边框的位置,放大的版本将会被绘制。我们基本上使用模板缓冲丢弃了放大版本物体中,位于原本物体片段处的,所有片段
这个过程将每个物体的片段的模板缓冲设置为1,当我们想要绘制边框的时候,我们主要绘制放大版本的物体中模板测试通过的部分,也就是物体的边框的位置。我们主要使用模板缓冲丢弃了放大版本中属于原物体片段的部分

所以我们首先来创建一个很简单的片段着色器,它会输出一个边框颜色。我们简单地给它设置一个硬编码的颜色值,将这个着色器命名为<var>shaderSingleColor</var>:

Expand Down Expand Up @@ -195,4 +195,4 @@ glEnable(GL_DEPTH_TEST);

你看到的物体轮廓算法在需要显示选中物体的游戏(想想策略游戏)中非常常见。这样的算法能够在一个模型类中轻松实现。你可以在模型类中设置一个boolean标记,来设置需不需要绘制边框。如果你有创造力的话,你也可以使用后期处理滤镜(Filter),像是高斯模糊(Gaussian Blur),让边框看起来更自然。

除了物体轮廓之外,模板测试还有很多用途,比如在一个后视镜中绘制纹理,让它能够绘制到镜子形状中,或者使用一个叫做阴影体积(Shadow Volume)的模板缓冲技术渲染实时阴影。模板缓冲为我们已经很丰富的OpenGL工具箱又提供了一个很好的工具。
除了物体轮廓之外,模板测试还有很多用途,比如在一个后视镜中绘制纹理,让它能够绘制到镜子形状中,或者使用一个叫做阴影体积(Shadow Volume)的模板缓冲技术渲染实时阴影。模板缓冲为我们已经很丰富的OpenGL工具箱又提供了一个很好的工具。

0 comments on commit f83a46b

Please sign in to comment.