標籤: 暫無標籤

glBlendFunc,函數,指定像素算術。

1 glBlendFunc -簡介

  glBlendFunc 函數指定像素算術。

2 glBlendFunc -語法

  void WINAPI glBlendFunc(

  GLenum sfactor,

  GLenum dfactor

  );

3 glBlendFunc -參數

  sfactor

  指定如何計算紅綠色、 藍白 alpha 源混合因素。 接受了九個符號常量: GL_ONE_MINUS_DST_ALPHA,GL_ZERO GL_ONE,GL_DST_COLOR GL_ONE_MINUS_DST_COLOR,GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA,GL_DST_ALPHA 和 GL_SRC_ALPHA_SATURATE。

  dfactor

  指定如何計算紅綠色、 藍白 alpha 混合目標因素。 接受了八個符號常量: GL_ZERO GL_ONE,GL_SRC_COLOR GL_ONE_MINUS_SRC_COLOR,GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA,GL_DST_ALPHA,和 GL_ONE_MINUS_DST_ALPHA。

  返回值

  返回以下錯誤代碼和他們的條件。

  返回代碼

  說明

  GL_INVALID_ENUM

  sfactor 或 dfactor 不被接受的值。

  GL_INVALID_OPERATION

  調用 glBegin 和 glEnd 的相應調用之間被調用該函數。

4 glBlendFunc -備註

  在 RGB 模式下可以使用混合使用幀緩衝區 (目標值) 中已有的 RGBA 值傳入的 (源) RGBA 值的函數繪製像素為單位)。 默認情況下,混合處于禁用狀態。 啟用和禁用混合使用 glEnable glDisable GL_BLEND 參數。

  當啟用,glBlendFunc 定義混合的操作。 sfactor 參數指定的九個方法,用於擴展源顏色分量。 dfactor 參數指定的八個方法,用於擴展目標顏色分量。 十一個可能的方法是在下表中所述。 每個方法定義四個規模因素 — — 為紅色、 綠色、 藍色和阿爾法各一個。

  在表中,並在隨後方程在源和目標顏色組件被稱為 (R s ,G s 、 B s , s ) 和 (R d ,G d 、 B d , d )。 他們被理解為是具有零之間的整數值和 (k R 、 k G 、 k R 、 k A ),其中

  kR = 2 m R-1

  kG = 2 m G-1

  kB = 2 m B-1

  kA = 2 m A-1

  和 (m 研發 、 m G 、 m B 、 m A ) 是紅色綠色、 藍白 alpha bitplanes 數。

  源和目標規模因素被稱為 (s R 、 s G 、 s B 、 s A ) 和 (d 研發 、 d G 、 d B 、 d A )。 表示的表中所述的規模因素 ( f R f、 G 、 f B 、 f A ),表示源或目標的因素。 所有規模因素都有範圍 [0]。

  參數

  (f R f、 G 、 f B 、 f A )

  GL_ZERO

  (0,0,0,0)

  GL_ONE

  (1,1,1,1)

  GL_SRC_COLOR

  (R s / s k R 、 G / k G 、 B s / k B、 A s / k A)

  GL_ONE_MINUS_SRC_COLOR

  (1,1,1,1)-(R s / s k R 、 G / k G 、 B s / k B、 A s / k A)

  GL_DST_COLOR

  (R d / d k R 、 G / k G 、 B d / k B、 A d / k A)

  GL_ONE_MINUS_DST_COLOR

  (1,1,1,1)-(R d / d k R 、 G / k G 、 B d / k B、 A d / k A)

  GL_SRC_ALPHA

  (A s / s k A 、 A / s k A 、 A / k A、 A s / k A)

  GL_ONE_MINUS_SRC_ALPHA

  (1,1,1,1)-(A s / s k A 、 A / s k A 、 A / k A、 A s / k A)

  GL_DST_ALPHA

  (A d / k A , d / k A A、 d / k A、 A d / k A)

  GL_ONE_MINUS_DST_ALPHA

  (1,1,1,1)-(A d / k A , d / k A A、 d / k A、 A d / k A)

  GL_SRC_ALPHA_SATURATE

  (我,我, 1)

  在的表

  我 = 分鐘 (A s 、 k A-A d) / k A

  繪製 RGBA 模式中時,請確定像素的混合的 RGBA 值,系統使用以下公式:

  (d) R = 分鐘 (k R 、 R s s R + R d d R)

  (d) G = 分鐘 (k G ,G s s G + G d d G)

  (d) B = 分鐘 (k B 、 B s s B + B d d B)

  (d) = 分鐘 (k A , s s A + A d d A)

  儘管兩地精度明顯,上述方程的混合演算法不完全指定,因為混合操作具有不精確的整數顏色值。 但是,應等於之一的一個混合因素保證不會修改其被乘數,並為零的混合因子等將其被乘數減少到零。 因此,例如當 sfactor 是 GL_SRC_ALPHA、 dfactor 是 GL_ONE_MINUS_SRC_ALPHA,和 A s 等於 k A,方程降低簡單更換:

  Rd = R s

  Gd = G s

  B d = B s

  Ad = A s

  示例

  透明度最好實現使用 glBlendFunc ( GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA ) 與基元從最遠到最近的排序。 請注意此透明度計算不需要 alpha bitplanes,幀緩衝區中的存在。

  您還可以使用 glBlendFunc ( GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA ) 按任意順序呈現是鋸消除點和線。

  若要優化的多邊形消除鋸齒,使用 glBlendFunc ( GL_SRC_ALPHA_SATURATE GL_ONE ) 與排序從最近的最遠的多邊形。 (見中 glEnable 的 GL_POLYGON_SMOOTH 參數信息的多邊形消除鋸齒)。 目標 alpha bitplanes 必須正確操作此混合函數存在存儲累積的覆蓋範圍。

  傳入 (源) 字母是從 1.0 (K A) 代表完整透明度為 0.0 (0) 表示完全透明一材料的不透明度。

  在啟用多個顏色緩衝區的繪圖時每個已啟用的緩衝區分開,混合,緩衝區的內容用於目標顏色。 (請參閱 glDrawBuffer。

  混合影響唯一 RGBA 呈現。 它的顏色索引呈現器忽略。

上一篇[轤]    下一篇 [壚]

相關評論

同義詞:暫無同義詞