期中考-OpenGL
- 今天期中考,考了OprnGL的十個常見程式碼
主題: glu/glut函式
- 先去下載 freeglut windows 版,https://www.transmissionzero.co.uk/software/freeglut-devel/ 選擇 Download freeglut 3.0.0 for MinGW
- 然後步驟都跟以往一樣,只是稍微去修改裡面的程式碼,改圖案的半徑與高度,還有按+圖片的密度會越來越大,按-密度會變小
階層式移動、階層式轉動
- 從glut裡面選取一些特定的程式碼複製貼上,拼湊成新的程式就會得到下圖

- 後來再把那些程式碼移位子,加上myCube(),還有修改顏色,就能得到一紅一黃的圖案,就能得到下圖
- 我們再加上glRotatef的程式碼,讓圖案可以去轉動,程式碼如下
#include <GL/glut.h>
void myCube()
{
glPushMatrix();
glColor3f(1,0,0);
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);
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();
}
- 再修改glTranslatef裡面的值,讓它是由上面的頂點開始旋轉
- 用程式碼再寫一個綠色的機器人身體,讓手臂皆在身體上並且可以旋轉
#include <GL/glut.h>
void myCube()
{
glPushMatrix();
glColor3f(1,0,0);
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);
glRotatef(angle, 0,0,1);
glTranslatef(0.22,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();
}






沒有留言:
張貼留言