在适用于 iOS 应用程序的 OpenGL ES 2.0 中使用遮罩
我有一个应用程序,我希望用户在屏幕的某个特定区域进行绘制。为此,我使用了一张蒙版图片,该图片在可绘制区域为黑色,在不可绘制区域为透明。因此,用户只能在遮罩内部和遮罩黑色区域内部的屏幕区域上进行绘制。
我尝试通过模板缓冲区来实现它,并修改了 GLPaint 示例项目中的一些代码: http://pastebin.com/94MBr1Su< /a>
但是我仍然不明白模板缓冲区的使用。任何人都可以帮我解决我的问题的模板缓冲区的代码示例吗?另外,有没有办法在没有模板缓冲区的情况下实现这一点?
I have an app where I want user to draw in one certain area of the screen. For this purpose I use a picture of mask which is black in drawable area and transparent in non-drawable area. So user can draw only on the area of the screen inside the mask and inside the black area of the mask.
I've tried to implement it via stencil buffer and modified some code from GLPaint sample project: http://pastebin.com/94MBr1Su
However I still don't get the idea of stencil buffers usage. Can anyone please help me with code examples of stencil buffers for my issue? Also, is there any way to implement this without stencil buffers?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为您的蒙版是纹理,所以模板缓冲区不是一个好主意。
出于您的好奇心,这里有一些使用模板缓冲区配置蒙版的代码:
最简单的方法是根本不使用模板。创建一个灰度屏幕大小的纹理,在里面写下你的蒙版。然后将其绑定到片段着色器中:
Because your mask is a texture, stencil buffer is not a good idea.
For your curiosity, here some code to configure a mask with stencil buffer:
The simplest way is to NOT USE STENCIL AT ALL. Create a grayscale screen-size texture, write your mask inside. Then bind it in your fragment shader: