![]() |
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纹理,并按以下方式更改混合因子:
这将给你简单的绘画你的画笔颜色超过白色,但没有实际的颜色混合(画笔颜色最终会覆盖背景)。 |
![]() |
mikko · SwiftUI如何在不同堆栈中实现同一视图的平滑动画 9 月前 |
![]() |
routern · 如何组合contextMenu和圆角矩形? 10 月前 |
![]() |
DevHome98 · 3D触摸不适用于设备swift 1 年前 |
![]() |
dunoiww · 从全屏返回时如何触发onAppear 2 年前 |
![]() |
Community wiki · iPhone上ivar的继承问题 2 年前 |
![]() |
Community wiki · 查找iOS日历 2 年前 |
![]() |
Community wiki · 有效的IPhone编程技术[关闭] 2 年前 |