OpenGLES demo - 16. 蒙板 Stencil


在OpenGLES的创建中,和颜色缓冲以及深度缓冲相比,蒙板缓冲(Stencil Buffer)不是一个必要的,在实际应用中也出现的少,甚至很多程序不使用蒙板。但是一些特殊的效果有时候会依赖于蒙板缓冲,常见的效果是实现一个镜子,所以我们今天讲一讲简单的蒙板。

蒙板是什么?可以看做是一个像素级别的Mask。它可以按照需求,在屏幕上任意地方、任何形状的一块区域设置一个值,这块区域就是蒙板。然后在接下来的渲染中,开发者可以通过参数的配置,来决定最终渲染的图像是只在这块区域显示,或者是不在这块区域显示。而设置蒙板的这个值,通常是一个8位的整型值。蒙板的原理很简单,下面主要看下在IOS上面怎么实现蒙板的渲染吧。

看过代码的同学应该知道,最开始在AppDelegate里面创建OpenGLESView的时候会设置值,这里讲depth改成24,stencil由0改为8

    [_glView Initialize:8 GreenSize:8 BlueSize:8 AlphaSize:8 DepthSize:24 StencilSize:8 SamplesSize:0];

在创建深度缓冲的时候,由原来的GL_DEPTH_COMPONENT16就改为了GL_DEPTH24_STENCIL8_OES

<p style="margin-top: 0px; margin-bottom: 0px; font-size: 13px; font-family: 'Courier New'; color: rgb(61, 29, 129);"><span style="color: #000000">    </span>glGenRenderbuffers<span style="color: #000000">(</span><span style="color: #272ad8">1</span><span style="color: #000000">, &</span><span style="color: #4f8187">_depthRenderBuffer</span><span style="color: #000000">);</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 13px; font-family: 'Courier New'; color: rgb(61, 29, 129);"><span style="color: #000000">    </span>glBindRenderbuffer<span style="color: #000000">(</span><span style="color
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值