註冊mouse函式 glutMouseFunc(mouse);,多加以下的程式
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
printf("Hello Mouse!\n");
}
執行後點茶壺,小黑畫面會出現 printf 上所打的東西
把第五行printf 改成 printf("%d %d %d %d\n",button,state,x,y);
執行後點滑鼠的左鍵、右鍵、中鍵、點茶壺的左上、右上、左下、右下,會出現以上數值。
if (state==GLUT_DOWN) printf ("glVertex2f((%d-150)/150.0,-(%d-150)/150.0);\n",x,y);
printf 印出參數
下載data跟win32,解壓縮後打開window的資料夾,開啟Translate.exe
就會出現上圖的畫面
複製上一個的程式碼,然後增加以下幾行程式碼
float teapotX=0, teapotY=0;
teapotX=(x-150)/150.0;
teapotY=-(y-150)/150.0;
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(teapotX,teapotY,0);
glPushMatrix();
執行程式後的茶壺會跟著你滑鼠點的位置移動!
滑鼠幫助轉動(用右手開掌定則) :
對Y軸轉,比讚,完成 !
對X軸轉,把拇指向右 !
對-Y軸轉,比倒讚 !
對Z軸轉,拇指向著自己 !
複製上一個的程式碼,然後增加以下幾行程式碼
float angle=0;
void display()
{
glRotatef(angle,0,0,1);
///glTranslatef(teapotX,teapotY,0);
}
void motion(int x, int y)
{
angle=x;
display();
}
glutMotionFunc(motion); <註冊motion函式>
執行程式後的茶壺會轉動 !
沒有留言:
張貼留言