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)
****程式****
沒有留言:
張貼留言