2020年3月24日 星期二

w3_mouse

每周複習
加入滑鼠控制程式:

#include <stdio.h>
void mouse(int button,int state,int x,int y)
{
    printf("%d %d %d %d\n",button,state,x,y);
}

glutMouseFunc(mouse);
紀錄滑鼠點擊座標:
#include <GL/glut.h>
#include <stdio.h>
float teapx=0, teapy=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot( 0.3 );   //寫出實心茶壺
    glPopMatrix();
    glutSwapBuffers();   //將茶壺變兩倍大

}
void mouse(int button,int state,int x,int y)
{
    printf("%f %f\n",(x-150)/150.0,(y-150)/150.0);
    teapx=(x-150)/150.0;
    teapy=(y-150)/150.0;
}

int main(int argc, char**argv)
{
    glutInit(&argc,argv);  //main的參數,於近來
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);  //啟動3D的顯示能力,兩倍顯示buffer,有3D
    glutCreateWindow("week03 YES!!!");  //建立3D窗子
    glutDisplayFunc(display);  //如何去畫
    glutMouseFunc(mouse);
    glutMainLoop();  //主迴圈停在這,並且不會結束

}
滑鼠描出圖形
#include <GL/glut.h>
#include <stdio.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glVertex2f((156-150)/150.0,-(35-150)/150.0);
    glVertex2f((138-150)/150.0,-(59-150)/150.0);
    glVertex2f((124-150)/150.0,-(87-150)/150.0);
    glEnd();
    glutSwapBuffers();  

}
void mouse(int button,int state,int x,int y)
{
    if(state==GLUT_DOWN) printf("glVertex2f((%d-150)/150.0,-(%d-150)/150.0);\n",x,y);
}

int main(int argc, char**argv)
{
    glutInit(&argc,argv);  //main的參數,於近來
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);  //啟動3D的顯示能力,兩倍顯示buffer,有3D
    glutCreateWindow("week03 YES!!!");  //建立3D窗子
    glutDisplayFunc(display);  //如何去畫
    glutMouseFunc(mouse);
    glutMainLoop();  //主迴圈停在這,並且不會結束

}


沒有留言:

張貼留言