1.新增程式碼,得知滑鼠事件的狀態
static void mouseFunc(int button,int state,int x, int y)
{
printf("button: %d,state: %d, x: %d, y: %d\n",button,state,x,y);
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutMouseFunc(mouseFunc);
glutDisplayFunc(display);
glutMainLoop();
}
2.滑鼠拖曳畫線
int n=0,vx[9999],vy[9999];
static void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//glColor3b(1,0,0);
glBegin(GL_LINE_LOOP);
for(int i=0;i<n;i++){
glVertex2f((vx[i]-150)/150.0,-(vy[i]-150)/150.0);
}
glEnd();
glutSwapBuffers();
}
void mouseFunc(int x,int y)
{
vx[n]=x;
vy[n]=y;
n++;
display();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMotionFunc(mouseFunc);
glutMainLoop();
}
3.利用範例程式來了解移動、旋轉、放大縮小在3d圖上所呈現的樣子







沒有留言:
張貼留言