2.利用mouse旋轉
***************************************************************************
0.複習第四周還竟設置
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0, 1, 0);
glBegin(GL_LINE_LOOP);///線
glVertex3f(0.2,0.2,-0.8);///x,y,z
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0.2,0.2,0.8);///x,y,z
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glPopMatrix();
glFlush();
angle+=0.01;
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("XXXXXXXXX");
glutDisplayFunc(display);
glutIdleFunc(display); ///閒閒沒事做,就去呼叫函式display()
glutMainLoop();
return 0;
}
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0, 1, 0.5);///Z軸角度調一下
glColor3f(1, 0, 0);
glBegin(GL_LINE_LOOP);
glVertex3f(0.2,0.2,-0.8);///x,y,z
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
glColor3f(0, 1, 0);
glBegin(GL_POLYGON);
glVertex3f(0.2,0.2,0.8);///x,y,z
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glBegin(GL_QUAD_STRIP);
glVertex3f(0.2,0.2,-0.8);
glVertex3f(0.2,0.2,0.8);
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,-0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glPopMatrix();
glFlush();
angle+=0.01;
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("XXXXXXXXX");
glutDisplayFunc(display);
glutIdleFunc(display); ///閒閒沒事做,就去呼叫函式display()
glutMainLoop();
return 0;
}
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0, 1, 0.5);
glColor3f(1, 0, 0);///紅色
///前面是面
glBegin(GL_POLYGON);
glVertex3f(0.2,0.2,-0.8);///x,y,z
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0.2,0.2,0.8);///x,y,z
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glBegin(GL_QUAD_STRIP);
glVertex3f(0.2,0.2,-0.8);
glVertex3f(0.2,0.2,0.8);
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,-0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
///後面是線
glColor3f(0, 1, 0);///綠色
glBegin(GL_LINE_LOOP);
glVertex3f(0.2,0.2,-0.8);///x,y,z
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f(0.2,0.2,0.8);///x,y,z
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glBegin(GL_LINES);
glVertex3f(0.2,0.2,-0.8);
glVertex3f(0.2,0.2,0.8);
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,-0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glPopMatrix();
glFlush();
angle+=0.01;
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("XXXXXXXX");
glutDisplayFunc(display);
glutIdleFunc(display); ///閒閒沒事,就去呼叫函式display()
glutMainLoop();
return 0;
}
滑鼠控式轉動函式: glutMotionFunc(motion)
#include <GL/glut.h>
#include<stdio.h>
float angle=0,angle2=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0, 1, 0.5);///轉動角度
glColor3f(1, 0, 0);
///前面是面
glBegin(GL_POLYGON);
glVertex3f(0.2,0.2,-0.8);///x,y,z
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0.2,0.2,0.8);///x,y,z
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glBegin(GL_QUAD_STRIP);
glVertex3f(0.2,0.2,-0.8);
glVertex3f(0.2,0.2,0.8);
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,-0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
///後面是線
glColor3f(0, 1, 0);
glBegin(GL_LINE_LOOP);
glVertex3f(0.2,0.2,-0.8);///x,y,z
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f(0.2,0.2,0.8);///x,y,z
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glBegin(GL_LINES);
glVertex3f(0.2,0.2,-0.8);
glVertex3f(0.2,0.2,0.8);
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,-0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glPopMatrix();
glFlush();
//angle+=0.01;
}
void motion(int x,int y)
{
printf("%d %d\n",x ,y);
angle=x;
angle2=y;
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("XXXXXXXXX");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMotionFunc(motion);///滑鼠的動作
glutMainLoop();
return 0;
}
進階:
#include <GL/glut.h>
#include<stdio.h>
float angle=0,angle2=0;
void display()
{
glEnable(GL_DEPTH_TEST);///開啟Depth Test深度測試,進的會擋遠,遠的會擋近的
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
///GL_DEPTH_BUFFER_BIT存深度功能
glPushMatrix();
glRotatef(angle,angle2, angle, angle2);
glColor3f(1, 0, 0);
///前面是面
glBegin(GL_POLYGON);
glVertex3f(0.2,0.2,-0.8);///x,y,z
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(0.2,0.2,0.8);///x,y,z
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glBegin(GL_QUAD_STRIP);
glVertex3f(0.2,0.2,-0.8);
glVertex3f(0.2,0.2,0.8);
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,-0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
///後面是線
glColor3f(0, 1, 0);
glBegin(GL_LINE_LOOP);
glVertex3f(0.2,0.2,-0.8);///x,y,z
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,0.2,-0.8);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f(0.2,0.2,0.8);///x,y,z
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glBegin(GL_LINES);
glVertex3f(0.2,0.2,-0.8);
glVertex3f(0.2,0.2,0.8);
glVertex3f(0.2,-0.2,-0.8);
glVertex3f(0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,0.2,-0.8);
glVertex3f(-0.2,0.2,0.8);
glEnd();
glPopMatrix();
glFlush();
//angle+=0.01;
}
void motion(int x,int y)
{
printf("%d %d %d\n",x ,y);
angle=x;
angle2=y;
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH);///讓顯示視窗有3D深度功能
glutCreateWindow("XXXXXXXXX");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMotionFunc(motion);///滑鼠的動作
glutMainLoop();
return 0;
}
沒有留言:
張貼留言