(*^ω^*) 喵~Week09
➽ glu/glut函式
- 認識程式碼 glutSolid-
- Ctrl + F 搜尋 glutSolid
- glutSolidSphere(1,slices,stacks);//圓形(半徑,直切,橫切)
- glutSolidCone(1,1,slices,stacks);//錐形/甜筒(圓半徑,高度,直切,橫切)
- glutSolidTorus(0.2,0.8,slices,stacks);//環形(小圓半徑,大圓半徑,直切,橫切)

- 玩方塊
- 複製之前的程式碼
- #include <GL/glut.h>
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
- glutSwapBuffers();
- }
- int main(int argc, char *argv[])
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow("Week09");
- glutDisplayFunc(display);
- glutMainLoop();
- }
- 加入 glutSolidCube(1); //(大小)

- 控制長寬高和顏色如下
- glPushMatrix();
- glColor3f(1,0,0);
- glScalef(0.5,0.2,0.2);
- glutSolidCube(1);
- glPopMatrix();

- 簡化程式碼➝用自定函式
- void myCube()
- {
- glPushMatrix();
- glColor3f(1,0,0);
- glScalef(0.5,0.2,0.2);
- glutSolidCube(1);
- glPopMatrix();
- }
- 記得在display呼叫 myCube()
- 放上第二個方塊
- 在display裡增加如下
- glPushMatrix();
- glColor3f(1,0,0);//紅色
- myCube();
- glTranslatef(0.4,0.2,0);
- glColor3f(1,1,0);//黃色
- myCube();
- glPopMatrix();
- 記得myCube()的顏色要刪除(glColor3f(1,0,0);)

- 方塊轉動
- #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();
- glColor3f(1,0,0);
- glRotatef(angle,0,0,1);
- myCube();
- glPopMatrix();
- angle++;
- glutSwapBuffers();
- }
- int main(int argc, char *argv[])
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- glutIdleFunc(display);//有空閒時就更新
- glutCreateWindow("Week09");
- glutDisplayFunc(display);
- glutMainLoop();
- }

- 將要轉動的中心點移至中間
- glRotatef(angle,0,0,1);下一行加上glTranslatef(0.22,0,0);

- 再移至想要的點
- glRotatef(angle,0,0,1);上一行加上glTranslatef(0.3,0.3,0);

➷➷這裡的程式碼要由下往上看
沒有留言:
張貼留言