glBlendFunc,函數(shù),指定像素算術。

簡介

glBlendFunc 函數(shù)指定像素算術。

語法

void WINAPI glBlendFunc(

GLenum sfactor,

GLenum dfactor

);

參數(shù)

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

調(diào)用 glBegin 和 glEnd 的相應調(diào)用之間被調(diào)用該函數(shù)。

備注

在 RGB 模式下可以使用混合使用幀緩沖區(qū)(目標值)中已有的 RGBA 值傳入的(源) RGBA 值的函數(shù)繪制像素為單位)。默認情況下,混合處于禁用狀態(tài)。啟用和禁用混合使用 glEnableglDisable GL_BLEND 參數(shù)。

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

在表中,并在隨后方程在源和目標顏色組件被稱為 (R s ,G s 、 B s , s )和(R d ,G d 、 B d , d )。他們被理解為是具有零之間的整數(shù)值和(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 研發(fā)、 m G 、 m B 、 m A )是紅色綠色、藍白 alpha bitplanes 數(shù)。

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

參數(shù)

(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 值,系統(tǒng)使用以下公式

(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)

盡管兩地精度明顯,上述方程的混合算法不完全指定,因為混合操作具有不精確的整數(shù)顏色值。但是,應等于之一的一個混合因素保證不會修改其被乘數(shù),并為零的混合因子等將其被乘數(shù)減少到零。因此,例如當 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

示例

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

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

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

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

在啟用多個顏色緩沖區(qū)的繪圖時每個已啟用的緩沖區(qū)分開,混合,緩沖區(qū)的內(nèi)容用于目標顏色。 (請參閱 glDrawBuffer。

混合影響唯一 RGBA 呈現(xiàn)。它的顏色索引呈現(xiàn)器忽略。