對圖像(紋理)合成你可以得到圖像變換的動畫效果,如『燈火』.通過讀取兩張圖像,然後對其進行插值運算,最後生成平滑過渡的效果.演示程式下載:
對兩個或者多個紋理進行組合:
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_COMBINE);
紋理平滑過渡
GLfloat texEnvColor[] = {0.0f,0.0f,0.0f,combiner->interpol };
glActiveTexture(GL_TEXTURE1);
glTexEnvfv(GL_TEXTURE_ENV,GL_TEXTURE_ENV_COLOR, texEnvColor);
載入紋理單元0
Load_File_Texture(&combiner->texture0, hInstance, filename0);
激活紋理單元0
glActiveTexture(GL_TEXTURE0);
綁定紋理0
Bind_Image_Texture(&combiner->texture0);
glEnable(GL_TEXTURE_2D);
將紋理傳遞到下一個單元
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
載入紋理1
Load_File_Texture(&combiner->texture1, hInstance, filename1);
激活紋理單元1
glActiveTexture(GL_TEXTURE1);
綁定紋理1
Bind_Image_Texture(&combiner->texture1);
glEnable(GL_TEXTURE_2D);
設置紋理組合模式
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_COMBINE);
使用插值組合函式
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE);
設置成紋理單元0的輸出
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
設置成當前紋理圖像
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE);
為紋理單元設置ARG2
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE2_RGB, GL_CONSTANT);
使用alpha常數修改RGB分量
glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA);