OpenGL ES 1.1 clearColor 绘图

Posted

技术标签:

【中文标题】OpenGL ES 1.1 clearColor 绘图【英文标题】:OpenGL ES 1.1 clearColor drawing 【发布时间】:2012-06-04 07:39:29 【问题描述】:

如何在 OpenGL ES 1.1 中使用 [UIColor clearColor] 进行绘制?我想创建橡皮擦工具...

【问题讨论】:

【参考方案1】:

您可以创建蒙版图像。有很多方法可以做到这一点,这对我有用:

我创建了一个带有黑色圆圈的图像,其余部分都是透明的。我从这张图片创建了一个纹理并将其绘制为一个简单的纹理正方形,但使用了这个混合函数:

glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);

不要忘记启用混合,在绘制调用完成后恢复你的混合功能(或者如果你不在其他地方使用它,则禁用混合)

【讨论】:

谢谢!如果我有透明背景,它会起作用吗? 请注意,如果您只是使用二进制透明度(0 或 1),那么使用 glAlphaFunc 可能比使用 glBlendFunc 更好表现。使用混合意味着您希望将源颜色与目标颜色结合起来,因此它必须在绘制像素之前对帧缓冲区进行采样。使用 alpha 测试告诉它只丢弃一个像素,而不是从帧缓冲区中采样一个像素并重新绘制它。两者的结果相同,但在 GPU 上进行 alpha 测试更容易。 TIM:但是如果您认为渲染缓冲区已经满了,那么 alpha func 是否能够清除该渲染缓冲区的一部分? miksayer:你实际上并没有告诉我们你的情况是什么,你想做什么。在我给你的解决方案中,考虑到你有一个绿色的 UIView 有一个 openGL 子视图,它填充了任何形状和颜色。通过应用此方法,您将在绘制蒙版纹理的位置看到绿色形状。 @MaticOblak 但我有一个透明的背景视图 :( 在这种情况下我会看到什么? 我仍然不知道您要创建什么。您将看到的是,如果您有一个清晰的颜色是黑色或可能是苹果灰色背景。如果这是一个绘图应用程序,您可能会添加一些像背景这样的纸张,然后您就会看到它。你应该试着解释你想做什么。

以上是关于OpenGL ES 1.1 clearColor 绘图的主要内容,如果未能解决你的问题,请参考以下文章

iOS上的OpenGL ES 1.1:没有剪裁平面?

OpenGL ES 1.1 - alpha 蒙版

OpenGL ES 性能 2.0 与 1.1 (iPad)

OpenGL ES 1.1:如何替换 glBlendFuncSeparate?

OpenGL ES 1.1:无法转换为 VBO

glGetString(GL_VERSION) returns “OpenGL ES-CM 1.1” but my phone supports OpenGL 2