『迷霧』通過模糊遠端之物,而近端清晰.給3D世界帶來霧感.而且可以減小進場境中多邊形數量,從而提高渲染速度.演示程式按『+/-』鍵加減『迷霧』密度.下載『迷霧』
OpenGL直接提供『迷霧』支持:
1.首先需要啟用『迷霧』
glEnable(GL_FOG);
2.將像素與『迷霧』顏色進行混合而實現,其混合因子的設定跟據其視點距離, 『迷霧密度』和『迷霧模式』,設定『迷霧』可通過以下函式:
void glFogf(GLenum pname,GLfloat param);
void glFogfv(GLenum pname,const GLfloat*params);
void glFogi(GLenum pname,GLint param);
void glFogiv(GLenum pname,const GLint*params);
Pname(參數名) | Params(參數值) |
GL_FOG_MODE | 『迷霧』混合方程式,默認為GL_EXP
GL_LINEAR:factor=(end-z)/(end-start) GL_EXP:factor=e(-density*depth) GL_EXP2: factor=e(-density*depth)* (-density*depth) |
GL_FOG_DENSITY | 迷霧密度默認為1.0f |
GL_FOG_START | 迷霧離視點近端默認為0 |
GL_FOG_END | 迷霧離視點遠端默認為1 |
GL_FOG_INDEX | 迷霧顏色索引值默認為0 |
GL_FOG_COLOR | 迷霧顏色默認為黑色(0,0,0,0). |
啟用迷霧函是代碼
void Enable_Fog()
{
float fogColor[] = { 0.5, 0.5, 0.5, 1.0 };// 灰色
glEnable(GL_FOG);// 啟用霧
glFogfv(GL_FOG_COLOR, fogColor);// 霧色
glFogf(GL_FOG_MODE, GL_EXP2);// 顏色模式
glFogf(GL_FOG_START, 200);// 霧近端範圍
glFogf(GL_FOG_END, 1000);// 霧遠端範圍
glFogf(GL_FOG_DENSITY, 0.06f);// 密度
}