glutSolidSphere(1,slices,stacks);實體圓(半徑,幾片,幾層)
glutSolidCone(1,1,slices,stacks);實體甜筒(半徑,高度,幾片,幾層)
glutSolidTorus(0.2,0.8,slices,stacks);實體甜甜圈(內圈半徑,外圈半徑,幾片,幾層)
glutWireSphere(1,slices,stacks);線體圓(半徑,幾片,幾層)
glutWireCone(1,1,slices,stacks);線體甜筒(半徑,高度,幾片,幾層)
glutWireTorus(0.2,0.8,slices,stacks);線體甜甜圈(內圈半徑,外圈半徑,幾片,幾層)
照著之前的茶壺程式碼把正方體、顏色、大小程式碼加入
#include<GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glColor3f(1,0,0);///顏色
glScalef(0.5,0.2,0.2);///大小
glutSolidCube(1);///正方體
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09");
glutDisplayFunc(display);
glutMainLoop();
}
做自己的函式簡化程式
#include<GL/glut.h>
void myCube()///做自己的簡化程式
{
glPushMatrix();///先前程式碼轉移
glScalef(0.5,0.2,0.2);
glutSolidCube(1);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///再保存一次
glColor3f(1,0,0);///分別做顏色
myCube();///引用他
glTranslatef(0.4,0.1,0);///移動看分別
glColor3f(0,1,0);
myCube();
glPopMatrix();///再保存一次
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09");
glutDisplayFunc(display);
glutMainLoop();
}
做變數不斷的自己旋轉
#include<GL/glut.h>
void myCube()
{
glPushMatrix();
glScalef(0.5,0.2,0.2);
glutSolidCube(1);
glPopMatrix();
}
float angle=0;///設角度變數
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);///轉動
glColor3f(1,0,0);
myCube();
glPopMatrix();
angle++;///每次角度增加
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09");
glutIdleFunc(display);///有空時重畫
glutDisplayFunc(display);
glutMainLoop();
}
旋轉的中心放到畫面的中心
開啟檔案觀察旋轉方法
下載>開啟Transformation.exe
#include<GL/glut.h>
void myCube()
{
glPushMatrix();
glScalef(0.5,0.2,0.2);
glutSolidCube(1);
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0,1,0);
glutSolidCube(0.6);
glPushMatrix();下禮拜考
glTranslatef(0.3,0.3,0);///旋轉方法TRT///把下面旋轉中的手臂掛到右上角
glRotatef(angle,0,0,1);///旋轉
glTranslatef(0.22,0,0);///
glColor3f(1,0,0);
myCube();
glPopMatrix();
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}






沒有留言:
張貼留言