![]() |
1
18
让我们从定义您要寻找的混合类型开始。听起来你想让你的缓冲器从白色开始,让你的颜色混合服从 subtractive color model . 最简单的方法是定义混合的结果 C 刷 结束 C DST AS:
注意,使用这个方程,混合黄色(1,1,0)和青色(0,1,1)的结果是绿色(0,1,0),这是您所期望的。 拥有一把边缘会褪色的刷子会使事情稍微复杂一些。假设您现在有一个画笔不透明度值 一 刷 在哪里 一 刷 是1,你希望你的画笔颜色充分混合,在哪里 一 刷 为0,您希望保留原始颜色。现在你要找的是:
因为在OpenGL ES中混合计算结果 C = C SRC γ S + C DST γ D 如果我们进行以下替换,我们可以得到我们想要的:
现在让我们来看看在OpenGLES中设置它需要什么。这里有4个步骤:
请注意,使用减色模型实现画笔的缺点是颜色只能变暗,如果颜色不是主要减色颜色(青色、洋红或黄色)之一,则反复在其自身上绘制相同的颜色最终会导致颜色偏移。如果在执行此操作后,发现颜色偏移是不可接受的,请尝试将画笔纹理更改为步骤2中的alpha纹理,并按以下方式更改混合因子:
这将给你简单的绘画你的画笔颜色超过白色,但没有实际的颜色混合(画笔颜色最终会覆盖背景)。 |
![]() |
ThomThomPhao · 在另一个视图中访问变量以重置它 3 年前 |
![]() |
bvh · 禁用UISearchBar中的搜索字段 7 年前 |
![]() |
Pradumna Patil · REST API的问题 7 年前 |
![]() |
yakovlevvl · iPad和iPhone的不同UI 7 年前 |
|
Swathi · 我想用JSON数据生成tableview表单[关闭] 7 年前 |
![]() |
Zander · 带伸缩高度的iPad 7 年前 |