😛Week14
✨Timer設置
🧷程式
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.3,30,30);//實心的圓球 半徑 縱切 橫切
///glutWireSphere(0.3,30,30); 圓的線條 半徑 縱切 橫切
glutSwapBuffers();
}
int main(int argc,char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14 timer");
glutDisplayFunc(display);
glutMainLoop();
}
_________________________________________________________
🔼計時器&改顏色
🧷程式
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.3,30,30);
glutSwapBuffers();
}
void timer(int t)
{
glClearColor(1,0,0,0);///背景設為紅色
}
int main(int argc,char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14 timer");
glutDisplayFunc(display);
glutTimerFunc(4000,timer,0);///等待時間 執行誰 參數
glutMainLoop();
}
_____________________________________________________
🔼計時旋轉方塊
🧷程式
#include <GL/glut.h>
int angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidCube(0.3);
glPopMatrix();///方塊旋轉
glutSwapBuffers();
}
void timer(int t)
{
glutTimerFunc(30,timer,t+1);///設定下一個timer 下次計時的時間
angle++;
display();
}
int main(int argc,char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14 timer");
glutDisplayFunc(display);
glutTimerFunc(4000,timer,0);///第一個計時器
glutMainLoop();
}
_________________________________________________
🧷程式
#include <GL/glut.h>
int angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidCube(0.3);
glPopMatrix();
glutSwapBuffers();
}
int diff=1;
void timer(int t)
{
glutTimerFunc(20,timer,t+1);///設定下一個timer
angle+= diff;
if(angle>180) diff=-diff;
if(angle<0) diff=-diff; ///當角度到某位置 換方向旋轉
display();
}
int main(int argc,char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14 timer");
glutDisplayFunc(display);
glutTimerFunc(4000,timer,0);
glutMainLoop();
}
___________________________________________________
#include <GL/glut.h>
int angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidCube(0.3);
glPopMatrix();
glutSwapBuffers();
}
int diff=1;
void timer(int t)
{
glutTimerFunc(20,timer,t+1);///設定下一個timer
angle+= diff;
if(angle>90 || angle<0) diff=-diff;
display();
}
int main(int argc,char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14 timer");
glutDisplayFunc(display);
glutTimerFunc(4000,timer,0);///第一個計時器
glutMainLoop();
}
__________________________________________
✨製作定時擺手
🧷程式
#include <GL/glut.h>
int angle=0;
void drawArm1()
{
glPushMatrix();
glScalef(1,0.5,0.5);
glColor3f(1,0,0);
glutSolidCube(0.3);
glPopMatrix();
} ///手臂樣式
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glColor3f(1,1,1);
glutSolidCube(0.4);
glPushMatrix();
glTranslatef(-0.2,+0.2,0);
glRotatef(angle,0,0,1);
glTranslatef(-0.15,0,0);
drawArm1();
glPopMatrix();///手臂旋轉位置
glPopMatrix();///身體方塊
glutSwapBuffers();
}
int diff=1;
void timer(int t)
{
glutTimerFunc(20,timer,t+1);///設定下一個timer
angle+= diff;
if(angle>90 || angle<0) diff=-diff;
display();
}
int main(int argc,char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week14 timer");
glutDisplayFunc(display);
glutTimerFunc(4000,timer,0);///第一個計時器
glutMainLoop();
}




沒有留言:
張貼留言