Android 混合模式
我正在寻找一种方法来向我的程序添加更高级的混合模式(我可以自己定义的模式)。您建议如何使用 Android 来解决这个问题?
单独设置像素太慢,不是一个可行的解决方案。
I am looking for a way to add more advanced blend modes to my program (ones that I could define myself). How would you suggest going about this with Android?
Setting pixels individually is too slow to be a viable solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Android 支持 OpenGL 的一个子集。如果您追求速度,这将是您应该采取的路线。
Android supports a subset of OpenGL. That would be the route to take if you're looking for speed.
老实说,我不确定这是否受到支持。以 OpenGL 为例,混合模式由 OpenGL ES 规范定义,因此它们可以在硬件中实现。添加您自己的混合函数将违反规范,更不用说速度非常慢,因为它必须逐像素地进行操作。
我对画布不太确定,但出于类似的原因,我相信你也不能在那里做到这一点。
To be honest I'm not sure this is supported. Using OpenGL as an example, the blending modes are defined by the OpenGL ES Spec, so that they can potentially be implemented in hardware. Adding your own blend function would be breaking the spec, not to mention incredibly slow, because it would have to act pixel by pixel.
I'm not so sure about canvas, but I believe that you can't do it there either, for similar reasons.
即使没有 openGL,这也是可能的。 PorterDuff 应该是解决方案:
android.graphics.PorterDuffXfermode
和
android.graphics.PorterDuff
这是一个非常好的示例:
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html
It's possible even without openGL. PorterDuff should be the solution:
android.graphics.PorterDuffXfermode
and
android.graphics.PorterDuff
Here is a very good example:
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html