Hun*_*ang 9 iphone opengl-es erase
我有一个基于GLPaint示例代码的小涂料应用程序.它工作正常.我的问题是我需要实现一个"画笔"来擦除已经绘制的纹理.
我的目标是拥有一个柔软边缘的橡皮擦.现在我只使用了我用于绘图的相同纹理,但切换了混合功能
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
Run Code Online (Sandbox Code Playgroud)
至
glBlendFunc(GL_ZERO, GL_ZERO);
Run Code Online (Sandbox Code Playgroud)
结果是方形矩形橡皮擦.没关系,但这不是我真正想要的.我需要柔软的边缘.我想制作一个圆形橡皮擦而不是方形矩形.
你有什么猜测如何实现这一目标?或者你知道是否有办法创建我自己的自定义混合功能?
ssu*_*ube 12
你知道纹理的背景颜色吗?如果是这样,您可以简单地在其上绘制背景,而不是"擦除".这会更简单,因为你只会改变颜色而不是混合模式.
如果您需要使用混合,请尝试:
glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);
Run Code Online (Sandbox Code Playgroud)
这将使用完整alpha的零区域,并在画笔的alpha消失时淡入现有颜色.
此页面包含可能模式的完整列表:http: //www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml
| 归档时间: |
|
| 查看次数: |
3211 次 |
| 最近记录: |