2017年10月19日 星期四

LYC的計圖學習筆記-WEEK06

打光

GLfloat pos[] = { 0.0, 0.0, -1.0, 0.0 };
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week05");

    glutDisplayFunc(display);
    glEnable(GL_LIGHT0); //打開打光功能
    glEnable(GL_LIGHTING); //打開打光功能
    glLightfv(GL_LIGHT0, GL_POSITION, pos); 
    glEnable(GL_DEPTH_TEST); //深度測試
    glutMainLoop();
}
p.s. glLightfv(光源,光的座標,顏色);

加入keyboard,mouse

int RotateX=0,RotateY=0,RotateZ=0;
int oldX=0,oldY=0;
void keyboard(unsigned char key,int x,int y)
{
    printf("now: %c (%d %d)\n",key,x,y);
    if(key=='1')
    {
        RotateX+=1;
    }
    else if(key=='2')
    {
        RotateY+=1;
    }
    else if(key=='3')
    {
        RotateZ+=1;
    }
    glutPostRedisplay();
}
void mouse(int button,int state,int x,int y)
{
    printf("now: %d %d (%d %d)\n",button,state,x,y);
    if(state==GLUT_DOWN)
    {
        oldX=x;
        oldY=y;
    }
}
void motion(int x,int y)
{
    RotateY+=-(x-oldX); //y軸旋轉是左右旋轉
    RotateX+=-(y-oldY); //x軸旋轉是上下旋轉
    oldX=x;
    oldY=y;
    glutPostRedisplay();
}

沒有留言:

張貼留言