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} | 材質的反射光顏色 |
設置多邊形材質的環境光和散射光,函式示例:
- glEnable(GL_LIGHTING); // 啟用光照
- float white[] = {0f,1.0f,1.0f,1.0f};// 白色
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, white);// 設置材質