【问题标题】:scale factors of GL_SRC_ALPHA in glBlendFuncglBlendFunc 中 GL_SRC_ALPHA 的比例因子
【发布时间】:2019-02-20 00:07:28
【问题描述】:

Kronos web-page 表示GL_SRC_ALPHA, GL_ONE, etc. 指定的混合方法为三个颜色通道和 Alpha 通道中的每一个定义了四个比例因子。特别是,GL_SRC_ALPHA 的比例因子计算如下:

其中A_s0 是源的alpha 值,kA 的计算如下: ,其中 m_c 是相应的红色、绿色、蓝色或 alpha 位平面的数量。

  1. 我想知道这些位平面是什么?
  2. 为什么要按照上述公式计算kA?

例如,我很清楚当有 1 个源为 GL_SRC_ALPHA 和 1 个目标为 GL_ONE_MINUS_SRC_ALPHA 时会发生什么,它们的混合因子只是 1 减去上述值。如果 kA=1,则混合是来自源颜色和目标颜色之间的线性插值,由它们的 alpha 值加权,即alpha_s * source_color + (1-alpha_s) * destination_colorkA 如何在这里发挥作用?

【问题讨论】:

    标签: opengl


    【解决方案1】:

    基本上,所有这些都描述了unsigned integer normalization的过程:整数值到[0, 1]范围内的浮点值的转换。该页面是假设所有有问题的值都是整数的情况下编写的。由于混合使用浮点值进行,因此必须在进行任何计算之前对整数进行归一化。

    kA 只是该特定颜色通道中的位数(他们称之为“位平面”的数量)。除以kA 将整数范围 [0, kA] 上的值映射到浮点范围 [0, 1]。

    您可能会感到困惑的是,在现代 OpenGL 中,源值不是整数。您从片段着色器输出的值是浮点数。帧缓冲区中的目标值可能是浮点数或归一化整数,但如果它们被归一化,它们会在混合方程到达它们之前映射到 [0, 1]。

    基本上,该页面从未真正更新以适应现代 OpenGL。甚至是 OpenGL 2.0。最好忽略它和use something else

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 2011-04-28
      • 2021-06-20
      • 1970-01-01
      相关资源
      最近更新 更多