2018年6月15日 星期五

Week 16 張宇涵

----------------------------------------------------------------------------------------------
Week16 2018/06/15

(1) 期末作品
(2) 作品分享二乙
(3) 複習 : 貼圖
(4) 粒子系統

----------------------------------------------------------------------------------------------
Class practice1 貼圖再次練習 

1.開啟老師給予的檔案或者是自己之前做的檔案 | 開啟遇到錯誤的抬頭黨
步驟一




步驟二 : 加上freeglut.dll檔案加入Earth專案黨裏、加上earth map的貼圖名稱設為image.jpg


結果


2.做出背景圖,圖片換成marvel.jpg :
 程式碼為下列 :

    glBegin(GL_POLYGON);
        ///0615:開始畫圖,畫出四個點才可以跟螢幕一樣,最大是1最小是-1
        glTexCoord2f(0,0); glVertex2f(-1,+1);
        glTexCoord2f(0,1); glVertex2f(-1,-1);
        glTexCoord2f(1,1); glVertex2f(+1,-1);
        glTexCoord2f(1,0); glVertex2f(+1,+1);
    glEnd();///0615:畫圖結束



結果


3.把背景圖和地球圖分開
剪下glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID  ///0615: 複製此程式
貼在相對應的位子上

程式如下 : 
GLuint id, id2, id3;///0615: 增加貼圖的ID
float angle=0;
void display()
{   
    glEnable(GL_DEPTH_TEST); ///要啟動 Detph Test 深度值的測試,3D顯示才正確
    glClear(GL_COLOR_BUFFER_BIT  | GL_DEPTH_BUFFER_BIT);

    glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID
    glBegin(GL_POLYGON);///0615:開始畫圖,畫出四個點才可以跟螢幕一樣,最大是1最小是-1
        glTexCoord2f(0,0); glVertex2f(-1,+1);
        glTexCoord2f(0,1); glVertex2f(-1,-1);
        glTexCoord2f(1,1); glVertex2f(+1,-1);
        glTexCoord2f(1,0); glVertex2f(+1,+1);
    glEnd();///0615:畫圖結束


    glBindTexture(GL_TEXTURE_2D, id2); ///綁定bind 貼圖ID
    glPushMatrix();///自動轉很帥
        glRotatef(90, 1,0,0);
        glRotatef(angle, 0,0,1);///自動轉很帥
        gluQuadricTexture(quad, 1);
        gluSphere(quad, 0.3, 30, 30);///glutSolidTeapot(0.3);///0615:把這圓形縮小
...
void myInit()
{   quad = gluNewQuadric();
    id2 = myTexture("image.jpg");///0615 : Earth圖
    id = myTexture("marvel.jpg");///0615 : marvel圖
}



結果




----------------------------------------------------------------------------------------------
Class practice2 粒子系統 

1.在moodle上下載 Lesson19_partical.zip | 解壓執行











沒有留言:

張貼留言