/* 各種光源位置 */
const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
/* 各種材質位置 */
const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
/* 閒置時執行*/
static void idle(void)
{
printf("light pos = %.4f %.4f\n", light_position[0], light_position[1]);
glutPostRedisplay();
}
/* 利用滑鼠控制光源 */
void motion(int x, int y)
{
light_position[0] = -(x - 150)/150.0 *4;
light_position[1] = -(y - 150)/150.0 *4;
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glutPostRedisplay();
}
- Light reflection need to consider
1. Diffuse
2. Specular
3. Ambient
1. Light Source
2. Normal
3.
沒有留言:
張貼留言