今天第一步做了一個可以用滑鼠點來表示座標的程式
程式碼 :
#include <GL/glut.h>
#include <stdio.h>///TODO: 因為要printf()
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void mouse (int button,int state,int x ,int y)
{ ///TODO: 左,中,右鍵 下,上,X座標,Y座標
printf("button:%d state:%d x:%d y:%d",button, state,x,y);
} ///TODO: 印出這些值,觀察一下
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitWindowSize(640,480);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("08160830");
glutDisplayFunc(display);
glutMouseFunc(mouse);///等一下要顯示的函示
glutMainLoop();///TODO :我們註冊mouse函式
return EXIT_SUCCESS;///主要迴圈
}
=========================================================================
程式碼:
#include <GL/glut.h>
int N=0,vx[3000],vy[3000];
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_LINE_LOOP);
for(int i=0;i<N;i++){
glVertex2f( (vx[i]-150)/150.0,-(vy[i]-150)/150.0);
} ///減一半,在除一半 減一半,在除一半,加負號
glEnd();
glutSwapBuffers();///交換兩倍的buffers
}
void motion (int x ,int y)
{ ///TODO2: mouse motion 再拖動他
vx[N]=x; vy[N]=y; ///把vx,vy的存起來
N++;
display();///邊動mouse motion,邊畫display()
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitWindowSize(640,480);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("08160830");
glutDisplayFunc(display);
glutMotionFunc( motion);///等一下要顯示的函示
glutMainLoop();///TODO :我們註冊mouse函式
}




沒有留言:
張貼留言