- 開啟光源
glEnable(GL_DEPTH_TEST); // 3D深度測試開啟
glEnable(GL_LIGHTING); //根據當前光源計算顏色
glEnable(GL_LIGHT0); //開啟光源i
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glDisable(GL_LIGHTING); //關閉光源
glLightfv()的用法可參考:http://blog.csdn.net/chy19911123/article/details/46413121
- 繼 week 4的 Project setting,
加入
GLfloat pos[] = {0.0, 0.0, -1.0, 0.0}; //Light position
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week05");
//light
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_POSITION, pos);
//light end
glutDisplayFunc(display);
glutMainLoop();
}
- Add Mouse and Keyboard control.
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);
- 實作鍵盤滑鼠旋轉角度
int rotateX = 0, rotateY = 0, rotateZ = 0;
int oldX = 0, oldY = 0;
void keyboard(unsigned char key, int x, int y)
{
if(key == '1') rotateX+=1;
if(key == '2') rotateY+=1;
if(key == '3') rotateZ+=1;
glutPostRedisplay();
}
void motion(int x, int y)
{
rotateY += -(x- oldX);
rotateX += -(y- oldY);
glutPostRedisplay();
}
void mouse(int button, int state, int x, int y)
{
if(state == GLUT_DOWN)
{
oldX = x;
oldY = y;
}
}
沒有留言:
張貼留言