2017年10月26日 星期四

師大柯雷吉歐的計圖筆記-Week7

一、用滑鼠打光

1.先建一個glut專案

打開main.cpp看到126~134行程式碼
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 };
const 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 };


前四行是控制打光、後四行是材質。
今天重點是要做用滑鼠控制打光
將上面打光第四行 
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };   的cost拿掉
並在下面加上
void motion(int x,int y)
{
    light_position[0]= (x-150)/150.0*2;
    light_position[1]=-(y-150)/150.0*2;
    glLightfv(GL_LIGHT0,GL_POSITION,light_position);
    glutPostRedisplay();
}
並記得在main加上  glutMotionFunc(motion);
就可以按住滑鼠拖曳打光嘍~

沒有留言:

張貼留言