#include <GL/glut.h>
void display()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//兩種模式(顏色/深度)
glutSolidTeapot(0.3);//茶壺
glutSwapBuffers();//交換畫面會顯示圖案
}
int main(int argc, char**argv)//進階的參數(個數,字串)
{
glutInit(&argc, argv);//進階main 初始GLUT
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);//兩種模式開啟
glutCreateWindow("Week03 Mouse操作");
glutDisplayFunc(display);呼叫上面的display函式
glutMainLoop();
}
#如果要改背景顏色 glClearColor(R,G,B,A); (貼在glCrear上面)
2.加上Mouse功能
#include <GL/glut.h>
void display()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//兩種模式(顏色/深度)
glutSolidTeapot(0.3);//茶壺
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);//顯示座標
}
int main(int argc, char**argv)//進階的參數(個數,字串)
{
glutInit(&argc, argv);//進階main 初始GLUT
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);//兩種模式開啟
glutCreateWindow("Week03 Mouse操作");
glutMouseFunc(mouse);//使用滑鼠
glutDisplayFunc(display);呼叫上面的display函式
glutMainLoop();
}
void display()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//兩種模式(顏色/深度)
glutSolidTeapot(0.3);//茶壺
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);//顯示座標
}
int main(int argc, char**argv)//進階的參數(個數,字串)
{
glutInit(&argc, argv);//進階main 初始GLUT
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);//兩種模式開啟
glutCreateWindow("Week03 Mouse操作");
glutMouseFunc(mouse);//使用滑鼠
glutDisplayFunc(display);呼叫上面的display函式
glutMainLoop();
}
3.滑鼠移動茶壺
#include <GL/glut.h>
float teapotX=0, teapotY=0;
void display()
{
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(); 重畫畫面Redisplay
}
int main(int argc, char**argv)//進階的參數(個數,字串)
{
glutInit(&argc, argv);//進階main 初始GLUT
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);//兩種模式開啟
glutCreateWindow("Week03 Mouse操作");
glutMouseFunc(mouse);
glutDisplayFunc(display);//使用滑鼠
glutMotionFunc(motion);呼叫上面的display函式
glutMainLoop();
}
沒有留言:
張貼留言