2015年3月26日 星期四

week05_鄭庭峰

(1) 自製3D模型

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle, 0,1,0);
        glBegin(GL_LINE_LOOP);
            glVertex3f( 0.2, 0.2, 0.8);
            glVertex3f( 0.2,-0.2, 0.8);
            glVertex3f(-0.2,-0.2, 0.8);
            glVertex3f(-0.2, 0.2, 0.8);
        glEnd();

        glBegin(GL_POLYGON);
            glVertex3f( 0.2, 0.2,-0.8);
            glVertex3f( 0.2,-0.2,-0.8);
            glVertex3f(-0.2,-0.2,-0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();
    glPopMatrix();
    glFlush();
    angle+=0.01;
}


(2)利用mouse旋轉
     物體會旋轉

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle, 1,0.5,0);
        glBegin(GL_LINE_LOOP);
            glVertex3f( 0.2, 0.2, 0.8);
            glVertex3f( 0.2,-0.2, 0.8);
            glVertex3f(-0.2,-0.2, 0.8);
            glVertex3f(-0.2, 0.2, 0.8);
        glEnd();

        glBegin(GL_LINE_LOOP);
            glVertex3f( 0.2, 0.2,-0.8);
            glVertex3f( 0.2,-0.2,-0.8);
            glVertex3f(-0.2,-0.2,-0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();

        glBegin(GL_LINES);
            glVertex3f( 0.2, 0.2, 0.8);
            glVertex3f( 0.2, 0.2,-0.8);

            glVertex3f( 0.2,-0.2, 0.8);
            glVertex3f( 0.2,-0.2,-0.8);

            glVertex3f(-0.2,-0.2, 0.8);
            glVertex3f(-0.2,-0.2,-0.8);

            glVertex3f(-0.2, 0.2, 0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();
    glPopMatrix();
    glFlush();
    angle+=0.01;

讓旋轉的物體有顏色面和線
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPushMatrix();
        glRotatef(angle, 1,0.5,0);
        glColor3f(1,0,0);
        ///面
        glBegin(GL_POLYGON);
            glVertex3f( 0.2, 0.2, 0.8);
            glVertex3f( 0.2,-0.2, 0.8);
            glVertex3f(-0.2,-0.2, 0.8);
            glVertex3f(-0.2, 0.2, 0.8);
        glEnd();

        glBegin(GL_POLYGON);
            glVertex3f( 0.2, 0.2,-0.8);
            glVertex3f( 0.2,-0.2,-0.8);
            glVertex3f(-0.2,-0.2,-0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();

        glBegin(GL_QUAD_STRIP);
            glVertex3f( 0.2, 0.2, 0.8);
            glVertex3f( 0.2, 0.2,-0.8);

            glVertex3f( 0.2,-0.2, 0.8);
            glVertex3f( 0.2,-0.2,-0.8);

            glVertex3f(-0.2,-0.2, 0.8);
            glVertex3f(-0.2,-0.2,-0.8);

            glVertex3f(-0.2, 0.2, 0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();

        ///線
        glColor3f(0, 0, 0);
        glBegin(GL_LINE_LOOP);
            glVertex3f( 0.2, 0.2, 0.8);
            glVertex3f( 0.2,-0.2, 0.8);
            glVertex3f(-0.2,-0.2, 0.8);
            glVertex3f(-0.2, 0.2, 0.8);
        glEnd();
        glBegin(GL_LINE_LOOP);
            glVertex3f( 0.2, 0.2, -0.8);
            glVertex3f( 0.2,-0.2, -0.8);
            glVertex3f(-0.2,-0.2, -0.8);
            glVertex3f(-0.2, 0.2, -0.8);
        glEnd();
        glBegin(GL_LINES);
            glVertex3f( 0.2, 0.2, 0.8);
            glVertex3f( 0.2, 0.2,-0.8);

            glVertex3f( 0.2,-0.2, 0.8);
            glVertex3f( 0.2,-0.2,-0.8);

            glVertex3f(-0.2,-0.2, 0.8);
            glVertex3f(-0.2,-0.2,-0.8);

            glVertex3f(-0.2, 0.2, 0.8);
            glVertex3f(-0.2, 0.2,-0.8);
        glEnd();
    glPopMatrix();
    glFlush();
    angle+=0.01;
}

讓物體不是透明的 看起來較有真實感

 ///要在main()裡面,glutInit()之後,glutCreateWindow()之前,
    ///加一行glutInitDisplayMode(GLUT_DEPTH); ///讓顯示的window有3D深度的功能
    glEnable(GL_DEPTH_TEST); ///開啟Depth Test深度測試, 近的會擋到遠的, 遠的不會擋到近的
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);




(3)
   

沒有留言:

張貼留言