Blend指GL_BLEND机制,纹理函数指glTexEnv机制.
两者本质上都是在成像的过程中,将之前过程得到的颜色值与当前步骤作用的颜色值,使用某种公式或规则算得一个结果颜色.
Blend的公式由glBlendFunc指定,纹理函数由glTexEnv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_XXX)指定.
Blend的Source是当前FragmentShader运算的结果,Dest是之前已经存储在帧缓冲区中的像素颜色值.混合发生在光栅化为Fragment后,但在最终的像素被绘制到帧缓冲区之前.
纹理函数的Source是之前纹理单元的计算结果(第一个纹理单元之前的颜色为光照计算的结果或无光照时的顶点颜色值),另一个因子是当前纹理单元的颜色值.
Blend混合渲染作用于两个渲染Pass之间,纹理函数作用于某个渲染Pass中的两个纹理单元之间.
显然,Blend在整体方程式的更高层,能实现(T1 * T2) + (T3 * T4)这种方程,而只靠固定管线的纹理函数机制,即使有多层纹理单元,也不能实现这个方程.当然,可编程Fragment Shader可以实现任何自定的混合公式.
The process by which the final fragment color value is derived is called the texture environment function.
Typically, applications generate white polygons, light them, and then use this lit value to modulate the texture image to effectively produce a lit, textured surface.