【问题标题】:Android Blend ModesAndroid 混合模式
【发布时间】:2011-04-13 13:18:24
【问题描述】:

我正在寻找一种方法来为我的程序添加更高级的混合模式(我可以自己定义的模式)。您如何建议使用 Android 进行此操作?

单独设置像素太慢,不是可行的解决方案。

【问题讨论】:

  • 这也需要是使用Canvas渲染系统的解决方案,而不是openGL。
  • 您好,我问了一个相关问题,关于 android 可以绘制多少像素并保持屏幕刷新速度。你在每个屏幕上画了多少像素,你的 fps 是多少?
  • 我不太了解 FPS,但我尝试多次设置 50x50 图像(大约 40-50 次),而且速度非常慢。它是一种涂抹工具,因此必须将操作应用于绘制线的每隔几个像素。
  • 这很糟糕,因为大多数 android 渲染方法都是封装的本地方法,它们具有更大的能力来实际处理渲染。抱歉,我无法为您的问题提供更多帮助。

标签: java android colors blending


【解决方案1】:

即使没有 openGL 也是可能的。 PorterDuff 应该是解决方案:

android.graphics.PorterDuffXfermode

android.graphics.PorterDuff

这是一个很好的例子:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html

【讨论】:

  • 问题是我无法添加自定义 xFermode。例如变亮、变暗、饱和等。
  • @GuyNoir 变亮和变暗已经定义(参见 PorterDuff.Mode)。
【解决方案2】:

说实话,我不确定这是否受支持。以 OpenGL 为例,混合模式由 OpenGL ES Spec 定义,因此它们可以潜在地在硬件中实现。添加您自己的混合函数会违反规范,更不用说速度非常慢,因为它必须逐个像素地进行操作。

我对画布不太确定,但我相信你也不能在那里做,出于类似的原因。

【讨论】:

    【解决方案3】:

    Android 支持 OpenGL 的子集。如果您正在寻找速度,那将是您应该采取的路线。

    【讨论】:

    • 这并不能真正解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2012-08-04
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多