表面位块传输 1.8中有一个新参数:混合。定义了以下值:

  • BLEND_ADD
  • BLEND_SUB
  • BLEND_MULT
  • BLEND_MIN
  • BLEND_MAX
  • BLEND_RGBA_ADD
  • BLEND_RGBA_SUB
  • BLEND_RGBA_MULT
  • BLEND_RGBA_MIN
  • BLEND_RGBA_MAX
  • BLEND_RGB_ADD
  • BLEND_RGB_SUB
  • BLEND_RGB_MULT
  • BLEND_RGB_MIN
  • BLEND_RGB_MAX

有人可以解释一下这些模式的含义吗?

有帮助吗?

解决方案

您可以在此处找到混合操作的源代码: 表面.h

基本上,ADD 将两个源像素相加并将结果剪辑为 255。SUB 减去两个像素并剪辑为 0。

MULT: result = (p1 * p2) / 256

MIN: :选择每个通道的较低值(不是整个像素),因此如果 Pixel1 是 (100,10,0) 像素2是 (0,10,100), , 你得到 (0,10,0)

MAX: :与 MIN 相反(即 (100,10,100))

还有一种附加的混合模式,从文档中看不出来: 0 (或者直接忽略该参数)。此模式会将源表面“标记”到目标表面。如果源表面有一个 Alpha 通道,这将决定每个像素的“强度”(0=没有效果, 255=复制像素, 128: result = .5*source + .5*destination).

有用的效果:要使某个区域变暗,请使用混合模式 0,将源/图章表面填充为黑色并将 alpha 设置为 10: (0,0,0,10).

为了使其变亮,请使用白色 (255,255,255,10).

其他提示

这些是用于将图像相互叠加的混合模式。混合模式的名称已经告诉您底层操作。

BLEND_* 常量只是简单的别名 BLEND_RGB_* 常数和 BLEND_RGBA_* 变体在所有四个通道(包括 Alpha 通道)上运行,而不是仅在 RGB 上运行。

有关不同混合模式及其各自效果的一般信息,请参阅 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top