OpenGL之材質

OpenGL之材質

OpengGL為多邊形設置材質屬性,根據紅綠藍RGB的分量而確定反射光顏色:如下表:

材質 光源的光顏 反射光顏色, 簡介
綠色(0,1,0) 白色(1,1,1) 綠色(0,1,0) 只反射綠光
綠色(0,1,0) 紅色(1,0,0) 黑色(0,0,0) 只反射黑光

 

材質 簡介
void glMaterialf(GLenum face, GLenum pname, GLfloat param); 為多邊形設置材質屬性用於光照計算,它是全局性的, 影響所有繪製的多邊形,直到在次調用
void glMaterialfv(GLenum face, GLenum pname, const GLfloat *params); glMaterialf()數組版本

 

face 簡介
GL_FRONT 材質僅應用於多邊形正面
GL_BACK 多邊形反面
GL_FRONT_AND_BACK 多邊形的正反面

 

pname 數值 簡介
GL_AMBIENT {r,g,b,a} 材質的環境光顏色
GL_DIFFUSE {r,g,b,a} 材質的散射光顏色
GL_AMBIENT_AND_DIFFUSE {r,g,b,a} 同時設置材質的環境光和散射光顏色
GL_SPECULAR {r,g,b,a} 材質的鏡面反射光顏色,反射出去的顏色不大於材質顏色

{1.0f,1.0f,1.0f,1.0f}:光會完全反射出去

GL_SHININESS 0-128 鏡面反射光指數

0:不聚焦

128:高度聚焦

GL_EMISSION {r,g,b,a} 材質的反射光顏色

設置多邊形材質的環境光和散射光,函式示例:

  1. glEnable(GL_LIGHTING); // 啟用光照
  2. float white[] = {0f,1.0f,1.0f,1.0f};// 白色
  3. glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white);// 設置材質

評論