2017年4月10日 星期一

20170410_Week06 佳諭der課堂筆記



Week 05 課堂內容筆記摘要



作業一 - 使用GLUT程式碼學會打光功能及應用
1.開啟GLUT專案及複習上周(Week05)程式碼+顯示出具有打光功能的茶壺。
(此步驟是先刪掉多行並執行讓打光功能顯示使自己對程式碼較有感覺)

截圖檔

















程式碼



    /*此為顯示(display)之精簡程式碼*/

    #include <GL/glut.h>

    static void display(void)

    {

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

       

        glPushMatrix();
            glutSolidTeapot(0.3);
        glPopMatrix();

        glutSwapBuffers();
    }



<延伸>
2.改變打光的位置(Light-position)來顯示打光的明暗程度。

截圖檔



















程式碼


    const GLfloat light_position[] = { -2.0f, 5.0f, -5.0f, 0.0f };
   

    * 代表打光座標(
light_position
)之GLUT程式碼。

    * 代表X座標(±)
    * 代表Y座標(±)
    * 代表Z座標(±)





3.打出今日所學程式碼並應用到執行上面。

(此截圖顯示為兩個茶壺之對照,一為移動後的動作,另一為閒置時正在旋轉中的動作)





程式碼




    glutIdleFunc(display);

    
代表閒置(Idle)
時所需要執行的動作指令
    * 代表函式名稱(可隨時替換)。



<延伸>
★以下皆為幾何多邊形~
 (1)茶壺 -  glutSolidTeapot(大小);
 (2)立方體 -  glutSolidCube(大小);
 (3)圓錐體 -  glutSolidCone底(r) , 高(h) , 直切(slice) , 橫切(stack) );
 (4)球體 -  glutSolidSphere底(r) , 直切(slice) , 橫切(stack) );
 (5)十二面體 -  glutDedocahedron();
 (6)二十面體 -  glutIcosahedron();

* 代表實心模型(solid),也可替換成空心線條模型(Wire)
* 代表幾何多邊形的各形狀。(可參考CodeBlock內建程式碼的介紹)




沒有留言:

張貼留言