2018年3月12日 星期一

八隻八哥八筆記 week03

Week-3

Step1
複習 GLUT外掛程式


*********程式包**********
#include <GL/glut.h>///開啟GL外掛

static void display(void)///配合glutDisplayFunc(display)

{
    glClearColor(1,1,0,1);///前三  背景  後一  透明
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清理畫面
    glutSolidTeapot(0.3);
    glutSwapBuffers();///秀出東西
}
int main(int argc, char**argv)///主函式
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
   glutCreateWindow("05160400Week3");
   glutDisplayFunc(display);
   glutMainLoop();
}

**********************************


Step2
滑鼠點擊定位(1)
****程式****
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
    printf("%d %d %d %d\n",button , state , x, y);

}
...
main 函式  +glutMouseFunc(mouse);

滑鼠點擊定位(2)
****程式****
void mouse(int button, int state, int x, int y)
{
    if(state==GLUT_DOWN) printf("glvertex2f(%f ,%f);\n",(x-150)/150.0,-(y-150)/150.0);

}

滑鼠點擊定位+移動(1)
****程式****
void motion(int x,int y)
{
    printf("%d %d\n",x,y);

}
 ...
main 函式  +glutMotionFunc(motion);




















滑鼠點擊定位+移動(2)
****程式****
#include <GL/glut.h>///開啟GL外掛
float teapotX=0, teapotY=0;
void display(void)///配合glutDisplayFunc(display)

{
    glClearColor(1,1,0,1);///前三  背景  後一  透明
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清理畫面
    glPushMatrix();
        glTranslatef(teapotX , teapotY , 0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();///秀出東西
}
#include <stdio.h>
void mouse(int button, int state, int x, int y)
{
    if(state==GLUT_DOWN) printf("glvertex2f(%f ,%f);\n",(x-150)/150.0,-(y-150)/150.0);
}
void motion(int x,int y)
{
    teapotX= (x-150)/150.0; teapotY= -(y-150)/150.0;
    printf("%d %d\n",x,y);
    glutPostRedisplay();
}
int main(int argc, char**argv)///主函式
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
   glutCreateWindow("05160400Week3");
   glutDisplayFunc(display);
   glutMouseFunc(mouse);
   glutMotionFunc(motion);
   glutMainLoop();

}


滑鼠點擊定位+移動(3)
****程式****

沒有留言:

張貼留言