2021年3月31日 星期三

電腦圖學week06

 #include <GL/glut.h> ///(0) 使用GLUT外掛 (忘了裝 GLUT)

float angle=0; ///TODO:

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空


    glPushMatrix();///TODO: 備份矩陣

        glRotatef(angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉

        glutSolidCube(1);

    glPopMatrix(); ///TODO: 還原矩陣

    glutSwapBuffers();///交換兩倍的buffers

    angle++;

}

int main(int argc, char ** argv)

{

    glutInit( &argc, argv ); ///(1) GLUT初始設定

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式

    glutCreateWindow("08160011我是神奇的小葉同學");///(3)開窗


    glutDisplayFunc(display);///(4)等一下要顯示的函式

    glutIdleFunc(display);

    glutMainLoop();///(5)主要迴圈

}




會自動旋轉







#include <GL/glut.h> ///(0) 使用GLUT外掛 (忘了裝 GLUT)
float angle=0; ///TODO:
void hand()
{
    glPushMatrix();
        glScalef(0.5,0.1,0.1);
        glColor3f(0,0,1);
        glutSolidCube(1);
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
    glColor3f(1,1,1);glutSolidCube(0.5);
    glPushMatrix();///TODO: 備份矩陣
        glTranslatef(0.25,0.25,0);
        glRotatef(angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
        glTranslatef(0.25,0,0);
        hand();
        glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            hand();
        glPopMatrix();
    glPopMatrix(); ///TODO: 還原矩陣

    glPushMatrix();///TODO: 備份矩陣
        glTranslatef(-0.25,0.25,0);
        glRotatef(-angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
        glTranslatef(-0.25,0,0);
        hand();
        glPushMatrix();
            glTranslatef(-0.25,0,0);
            glRotatef(-angle,0,0,1);
            glTranslatef(-0.25,0,0);
            hand();
        glPopMatrix();
    glPopMatrix(); ///TODO: 還原矩陣

    glutSwapBuffers();///交換兩倍的buffers
    angle++;
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv ); ///(1) GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160121");///(3)開窗

    glutDisplayFunc(display);///(4)等一下要顯示的函式
    glutIdleFunc(display);
    glutMainLoop();///(5)主要迴圈
}



沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...